我问过这个因为我无法找到答案。
我正在做的是
String selectTableSQL = "SELECT * FROM diseaseinfo WHERE diseaseName =""+diseaseName +'" AND name = '"+username+"'";
它是完美的运行,除非并且直到疾病不包含 类型的单词
维尔姆斯'肿瘤
艾迪生病
等...
如此查询
SELECT * FROM diseaseinfo WHERE diseaseName = 'Adult Still's disease' AND name = 'add';
由于'不会执行在'Adult Still's
上
并且在java中我不能用String selectTableSQL = ' ';
开始字符串,它总是在String selectTableSQL = " ";
任何解决方案?
答案 0 :(得分:0)
在JDBC中使用查询的正确方法是使用PreparedStatement
并绑定变量。
但在您的情况下,请尝试使用'
替换值中的单引号\'
。
您可以使用简单的diseaseName.replace("'", "\\'");
来执行此操作。
答案 1 :(得分:0)
要避免这种情况以及任何语法错误或SQL注入,您必须改为使用PreparedStatement:
String selectTableSQL = "SELECT * FROM diseaseinfo WHERE col1 = ? and col2 = ?";
try (PreparedStatement ps = connection.prepareStatement(selectTableSQL)) {
ps.setString(1, value_1);
ps.setString(2, value_2);
ResultSet rs = ps.executeQuery();
while(rs.next()){
//...
}
}