我试图通过java在我的MYSQL数据库中插入一些文本。
我试图将其放入的变量是一个TEXT变量。我的问题是,当我尝试插入它时,它会选择'并认为它是一个混乱的插入。
这是插入内容:
INSERT INTO TermsAndConditions (name,description,ownerID) VALUES ('bar condtions','Don't be stealin my stuff','2')
它认为我用“不要”这个词搞砸了
我想做的是做尽可能少的工作,告诉字符串只是接受所有字符需要(他们的意志不仅仅是')才能拥有“\”或“\£”在他们面前。
我知道我可以使用替换,但对于所有角色来说都是真正的痛苦!我问,因为他们必须是另一个更简单的解决方案!
由于
答案 0 :(得分:3)
您最好的选择可能是使用预处理语句(如果您不控制插入的输入以避免sql注入,那么它本身就是一个好主意!)
此网站提供了如何执行此操作的示例:http://www.exampledepot.com/egs/java.sql/InsertPs.html
对于您的示例,它将类似于:
// Prepare a statement to insert a record
String sql = "INSERT INTO TermsAndConditions (name,description,ownerID) VALUES (?,?,?)";
PreparedStatement pstmt = connection.prepareStatement(sql);
// Set the values
pstmt.setString(1, "bar condtions");
pstmt.setString(2, "Don't be stealin my stuff");
pstmt.setString(3, "2");
// Insert the row
pstmt.executeUpdate();
答案 1 :(得分:2)
你需要逃避单引号,或者更好的是,使用预备语句。
答案 2 :(得分:2)
您应该使用PreparedStatement来逃避您的特殊字符。
答案 3 :(得分:1)
您是否尝试过使用预先准备好的声明?这里的问题是正确地逃避字符串的问题。准备好的语句可以为您处理,并减少不洁和丑陋的连接代码。
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
答案 4 :(得分:-1)
你需要像这样逃避单引号:
INSERT INTO TermsAndConditions (name,description,ownerID) VALUES ('bar condtions','Don\'t be stealin my stuff','2')