1

我正在尝试通过 java 在我的 MYSQL 数据库中插入一些文本。

我要放入的变量是 TEXT 变量。我的问题是,当我尝试插入它时,它会拾取 ' 并认为它是一个搞砸的插入。

这是插入:

INSERT INTO TermsAndConditions (name,description,ownerID)  VALUES  ('bar condtions','Don't be stealin my stuff','2')

它认为我说“不要”这个词搞砸了

我想做的是做尽可能少的工作,并告诉字符串只接受所有字符需要(它们可能不仅仅是 ' )在它们之前有一个“\'”或“\£”。

我知道我可以使用替换,但对于所有角色来说,这将是一个真正的痛苦!我问是因为他们必须是另一个更简单的解决方案!

谢谢

4

5 回答 5

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();
于 2012-08-13T16:40:18.097 回答
2

您需要转义单引号,或者更好的是,使用准备好的语句。

于 2012-08-13T16:40:10.647 回答
2

您应该使用PreparedStatement来转义您的特殊字符。

于 2012-08-13T16:40:21.860 回答
1

您是否尝试过使用准备好的语句?这里的问题是正确转义字符串的问题。准备好的语句可以为您处理并减少不干净和丑陋的连接代码。

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

于 2012-08-13T16:40:35.380 回答
-1

您需要像这样转义单引号:

INSERT INTO TermsAndConditions (name,description,ownerID)  VALUES  ('bar condtions','Don\'t be stealin my stuff','2')
于 2012-08-13T16:40:17.570 回答