在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
野草 閱讀(451)
評論(0) 編輯 收藏 所屬分類:
oracle