java+oracle 无法执行select语句
表A_TABLE
里有两列a_char CHAR(20)
a_number NUMBER
String sql = "SELECT * FROM A_TABLE WHERE a_number=?";
try
{
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setShort (1, 1);
......
运行正常,可以取出所有的行
但是
String sql = "SELECT * FROM A_TABLE WHERE a_char=?";
try
{
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString (1, "001");
ResultSet rSet = pstmt.executeQuery();
....
无法取得任何一行,为什么啊?
问题点数:100、回复次数:9Top
1 楼leonardoxie(采采仔)回复于 2004-09-03 23:29:24 得分 0
jdk1.4.2+oracle10gTop
2 楼leonardoxie(采采仔)回复于 2004-09-03 23:30:48 得分 0
数据库里的数据没有问题,用的jdbcTop
3 楼guestman(天涯浪子)回复于 2004-09-03 23:33:34 得分 25
数据库中定义成:
a_char VARCHAR2(20)Top
4 楼himacs(★★★★★)回复于 2004-09-04 01:06:24 得分 25
char会以空格填满20,001的长度只有3,所以不相等
估计是这样,你可以尝试一下Top
5 楼delphi2java(delphi2java)回复于 2004-09-04 01:47:51 得分 0
Oracle能返回数据集?!Top
6 楼shine333(enihs)回复于 2004-09-04 02:23:57 得分 25
char自动补空格的Top
7 楼cuizm(射天狼 http://www.j2soft.cn/)回复于 2004-09-04 08:48:39 得分 25
建议到查询分析器中执行一下,看是什么原因~~~~~~Top
8 楼Tasia(灯盏)回复于 2004-09-04 09:29:47 得分 0
执行pstmt.setShort (1, 1);后,sql语句变成这样:
SELECT * FROM A_TABLE WHERE a_char=1;
执行pstmt.setString (1, "001");后,sql是这样:
SELECT * FROM A_TABLE WHERE a_char='001';
你就可以看出它们的不同了。如果a_char是数字类型的,第一种方法OK。第二种显然找不到匹配的数据了。
Top
9 楼Tasia(灯盏)回复于 2004-09-04 09:31:03 得分 0
不好意思。没看清题目。。
说了废话。Top




