【发布时间】:2018-11-21 23:53:59
【问题描述】:
我有一个 Oracle 数据库表 MyTable,其中有一列 XYZ,数据类型为 varchar2(40 Byte)。
该表中还有一行具有XYZ 列的值,例如'12345678-1234'
当我使用Oracle SQL 客户端并运行select 语句:select * from MyTable where XYZ='12345678-1234'; 时,它返回一个 记录。
但是当我使用 java 执行相同的选择语句时(如下所示),它返回 no 行。
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"));
}
这里总是打印 No Value
编辑: 当我在表格行中使用不带破折号的值时(例如:'12345678'),那么以上两者都会给出相同的结果 - 一行。
请指出我在这里遗漏的内容。
【问题讨论】:
-
@MichaelPeacock:他已经提到查询正在返回 Oracle SQL 客户端上的行。
-
他说它在oracle客户端上返回数据。 “Select * from MyTable”是否返回数据?如果您的 Oracle 客户端和 Java 客户端之间的查询是相同的,那么很可能两者之间的连接信息不同。
-
@MichaelPeacock:我同意你的看法; OP 需要验证连接信息没有不同。
-
连接信息相同。我检查了很多次。请参阅编辑。
-
您可能需要转义破折号字符。尝试类似: select * from MyTable where XYZ='12345678\-1234' escape '\'