当 Statement 与 Java 和 Oracle 一起使用时,Prepared Statement 不起作用
Posted
技术标签:
【中文标题】当 Statement 与 Java 和 Oracle 一起使用时,Prepared Statement 不起作用【英文标题】:Prepared Statement not working while Statement is working with Java and Oracle 【发布时间】:2017-07-14 09:33:10 【问题描述】:我正在尝试使用 Java 1.6 和 Oracle 9i 运行一个简单的查询来获取数据。
即使我通过语句获得结果,但在使用 preaparedstatement
结果集时返回空行。有没有人遇到过同样的问题?
我的 JDBC 驱动版本是 10.1.0.5.0 DB 是 Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
下面是程序。
String query = "SELECT count(SEVERITY) as CNT FROM TICKET_TABLE where upper(customerid)=?" ;
PreparedStatement pst =null;
ResultSet lResultSet = null;
pst = con.prepareStatement(query);
pst.setString(1, "CUST_A");
lResultSet = pst.executeQuery();
while(lResultSet.next())
i = lResultSet.getInt("CNT");
lResultSet.close();
pst.close();
con.close();
【问题讨论】:
如果您希望只有一行,应将while
替换为if
...
错误 - 虽然很好。没有解释为什么 PreparedStatement 没有结果。
不是答案,只是评论...
顺便说一句,“空行”是什么意思?
你能告诉我们你使用“语句”的代码吗?
【参考方案1】:
您可以检查您正在使用的oracle驱动程序与java版本和数据库版本的兼容性。
其次,通过首先通过任何 Oracle 客户端工具运行查询条件来确认查询条件假设返回记录。
【讨论】:
与 sqldeveloper 4.2 相同的查询返回数据 确认您使用的jdbc驱动与db版本、java版本和操作系统的兼容性。 Oracle 驱动程序有时会很有趣。 APP-1 [Not Working] Java 1.5 ,JDBC driver version is 9.2.0.1.0 DB is Oracle DB Ver is Oracle9i Enterprise Edition Release 9.2.0.8.0 - Solaris 5.10 上安装的 64 位生产 Oracle APP-2 [工作] ======== Java 1.5,JDBC 驱动程序版本是 9.2.0.1.0,DB 是 Oracle DB Ver 是 Oracle9i Enterprise Edition Release 9.2.0.8.0 - 安装在 Solaris 5.10 上的 64 位生产 Oracle App3 [已工作] ==== Java 1.5,JDBC 驱动程序版本是 9.2.0.1.0 DB 是 Oracle DB Ver 是 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 生产 Oracle 安装在 Windows Enterprise 2003 上以上是关于当 Statement 与 Java 和 Oracle 一起使用时,Prepared Statement 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
java中对数据库的操作Statement和PrepareStatement这两个方法有啥不同?它们是一个类还是一个方法?
Java基础——Statement与PrepareStatement
在Java中 Connection、Statement、ResultSet 、PreparedSta