在使用Java对Oracle数据库进行查询的过程,出现了数据库中存在相应数据,但查询不到的问题。
修改前的表结构如下:
NAME | CHAR |
---|---|
PASSWORD | CHAR |
代码如下:
- 这里是带参数的查询方式:
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类型:
NAME | VARCHAR |
---|---|
PASSWORD | VARCHAR |
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)