我有代码,在搜索中有单引号或撇号
我有一个数据库,它有一个测试表,在name列中的值是 "my'test"
运行时
SELECT * from test WHERE name = 'my''test';
这个很好用
如果我在java程序中使用同样的方法,我不会得到任何错误或结果
但如果我只给名字加了一个引号,那就行了
SELECT * from test WHERE name = 'my'test';
你能帮我弄明白吗。
java代码是
Connection con = null;
PreparedStatement prSt = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.
getConnection("jdbc:oracle:thin:@localhost:1521:orcl"
,"user","pwd");
String query = "SELECT * from "
+ "WHERE name = ? ";
prSt = con.prepareStatement(query);
String value = "my'mobile";
char content[] = new char[value.length()];
value.getChars(0, value.length(), content, 0);
StringBuffer result = new StringBuffer(content.length + 50);
for (int i = 0; i < content.length; i++) {
if (content[i] == '\'')
{
result.append("\'");
result.append("\'");
}
else
{
result.append(content[i]);
}
}
prSt.setObject(1, result.toString());
int count = prSt.executeUpdate();
System.out.println("===============> "+count);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally{
try{
if(prSt != null) prSt.close();
if(con != null) con.close();
} catch(Exception ex){}
}
1条答案
按热度按时间ekqde3dh1#
对于一个
PreparedStatement
只需使用:另外:如果您使用
SELECT
语句检索数据,需要使用executeQuery()
不是executeUpdate()
```ResultSet rs = prst.executeQuery();
while (rs.next())
{
// process the result here
}