my sql insert语句,字符串变量有撇号

nqwrtyyt  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(344)

这个问题在这里已经有答案了

陈述和准备陈述的区别(15个答案)
如何在mysql中转义撇号(')(10个答案)
上个月关门了。
我正在尝试使用 INSERT java中的语句。但是,我使用的一个变量包含一个撇号,我不知道如何在语句中解释它。

public static void addAlbum(Album album) throws Exception {    

        try{
            Connection conn = getDBConnection();
            PreparedStatement posted = conn.prepareStatement(
                    "INSERT INTO album(title, year, singer, company) VALUES ('" + album.getName() +"', '"+ album.getYear() +"', '"+ album.getSinger() +"', '"+ album.getCompany() +"')"
            );
            posted.executeUpdate();
        }
        catch(Exception e) {
            System.out.println(e);
        }
        finally{System.out.println("Insert completed");}
    }

这是最重要的 album.getName() 如果检索一个字符串是“我回来了”,我该怎么做才能正确地插入这个值,而不是用撇号剪切字符串并使语句无效?

f3temu5u

f3temu5u1#

总之,所有的值都是 String 键入时,应按以下步骤操作:

String sql = "INSERT INTO album(title, year, singer, company) VALUES (?, ?, ?, ?)";
PreparedStatement posted = conn.prepareStatement(sql);
posted.setString(1, album.getName());
posted.setString(2, album.getYear());
posted.setString(3, album.getSinger());
posted.setString(4, album.getCompany());

这也将保护您的数据库不受sql注入的影响。
注:如果 year 是一个整数,你应该这样做 posted.setInt(2, album.getYear());

相关问题