在java中我们经常使用一下语法

......
String exSQL = " SELECT * FROM PK_TEST WHERE ID = ?";     
pstmt = conn.prepareStatement(exSQL);
pstmt.setString(1,idValue);
ResultSet rs = pstmt.executeQuery();
......

其中PK_TEST结构如下:

CREATE TABLE PK_TEST (
  ID      CHAR (9)      NOT NULL,
  NAME    VARCHAR2 (40),
  GENDER  CHAR (1),
  CONSTRAINT PK_PK_TEST
  PRIMARY KEY ( ID ) ) ;
注意:ID是CHAR (9)

在表中插入测试数据:
INSERT INTO PK_TEST ( ID, NAME, GENDER ) VALUES ('1        ', 'test1', '1');
INSERT INTO PK_TEST ( ID, NAME, GENDER ) VALUES ('2        ', 'test2', '0');
INSERT INTO PK_TEST ( ID, NAME, GENDER ) VALUES ('3        ', 'test3', '1');
INSERT INTO PK_TEST ( ID, NAME, GENDER ) VALUES ('123456789', 'test4', '0');
INSERT INTO PK_TEST ( ID, NAME, GENDER ) VALUES ('987654321', 'test5', '1');

使用Toad执行:
SELECT * FROM PK_TEST WHERE ID ='1';
SELECT * FROM PK_TEST WHERE ID ='1        ';

都没有问题,但如果我将前面java语法pstmt.setString(1,idValue);中的idValue赋值为'1',程序就是取不到值;
继续测试:
SELECT * FROM PK_TEST WHERE ID = :ID;
赋值为'1',没有结果;
赋值为'1        ',结果出来了;

可见无论在jdbc还是在数据库中软编码和硬编码有一定的区别。

唉!整理数据库中的主键吧:ID = SUBSTR(TRIM(ID)||'000000000',0,9);

posted on 2006-03-08 21:28 野草 阅读(429) 评论(0)  编辑  收藏 所属分类: oracle

只有注册用户登录后才能发表评论。


网站导航: