Oracle数据库:使用PreparedStatement查询不到相应数据

Oracle数据库:使用PreparedStatement查询不到相应数据,第1张

问题描述

在使用Java对Oracle数据库进行查询的过程,出现了数据库中存在相应数据,但查询不到的问题。

修改前的表结构如下:

NAMECHAR
PASSWORDCHAR

代码如下:

  • 这里是带参数的查询方式:
String sql="select * from USERS WHERE NAME=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1,"ZYL");
ResultSet rs=pstmt.executeQuery();
while(rs.next()) {
	res=rs.getString(1);
	System.out.println(res);
}
  • 这里是不带参数的查询方式:
String sql="select * from USERS WHERE NAME = 'ZYL'";
PreparedStatement pstmt=con.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
while(rs.next()) {
	res=rs.getString(1);
	System.out.println(res);
}

相同的NAME,使用不带参数的查询方式可以正常查询,但使用待参数的查询方式却查不到相应的结果。


原因分析:

可能是Oracle数据库,使用PreparedStatement带参数时,查询CHAR类型的数据查找不到?


解决方案:

我们直接对表结构进行修改即可,将CHAR类型修改为VARCHAR类型:

NAMEVARCHAR
PASSWORDVARCHAR

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/727794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存