[英]What does Statement.executeQuery() return for a SELECT statement
[英]Select statement written using statement.executeQuery can't select values having - (dash)
我有一个Oracle数据库表MyTable
,它的XYZ
列的数据类型为varchar2(40 Byte)
。
该表中还有一行具有XYZ
列值的行,例如'12345678-1234'
当我使用Oracle SQL客户端并运行select语句时: select * from MyTable where XYZ='12345678-1234';
,它返回一条记录。
但是,当我使用Java执行相同的select语句(如下所述)时,它不返回任何行。
Connection con = DriverManager.getConnection(url,user,pass);//I have proper parameters here
Statement stmt = con.createStatement();
String query= "select * from MyTable where XYZ='12345678-1234'";
ResultSet rs = stmt.executeQuery(query);
if (rs.next()){
System.out.println(rs.getString("XYZ"));
}else {
System.out.println("No Value"));
}
在这里它总是打印没有价值
编辑:当我在表行中使用不带破折号的值时(例如:“ 12345678”),则以上两种都给出相同的结果-一行。
请指出我在这里想念的东西。
您应该使用PreparedStatement
PreparedStatement stmt = con.prepareStatement("select * from MyTable where XYZ = ?");
preparedStatement.setString(1, "12345678-1234");
ResultSet rs = preparedStatement.executeQuery();
这不是我发现的Java代码的问题。
COMMIT是罪魁祸首。
我同时从Oracle Sql客户端和Java访问数据库,这导致了上述问题。
然后我使用了Commit; 在每个语句之后,我在Oracle Sql客户端中执行。 然后问题消失了。
如果有人想为此添加一些技术细节,那么我们将非常欢迎他们!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.