在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
野草 阅读(441)
评论(0) 编辑 收藏 所属分类:
oracle