繁体   English   中英

使用statement.executeQuery编写的Select语句无法选择具有-(破折号)的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM