2013-06-19 48 views
1

所以我的代碼:排序主鍵JDBC

public void addUser( 
      String username, String password, 
      String f_name, String l_name, String email) 
    { 
     try 
     { 
      //conn.setAutoCommit(false); 
      pstmnt = conn.prepareStatement("INSERT INTO users VALUES (?,?,?,?)"); 
      pstmnt.setString(1, "user_id_increment.nextval"); 
      pstmnt.setString(2, username); 
      pstmnt.setString(3, password); 
      pstmnt.setInt(4, 0); 

      pstmnt.execute(); 

而且在具有的OracleBI序列:

--Auto incrementing the user_id 
CREATE SEQUENCE user_id_increment 
MINVALUE 1 
START WITH 1 
INCREMENT BY 1 
CACHE 20; 

但是,我越來越Eclipse中的例外:

Error: ORA-01722: invalid number 

我認爲調用序列name.nextval會給我下一個值的序列,setString的作品,當我插入任何其他r整數。

任何想法?

回答

5

嘗試

pstmnt = conn.prepareStatement("INSERT INTO users VALUES (user_id_increment.nextval,?,?,?)"); 
     pstmnt.setString(1, username); 
     pstmnt.setString(2, password); 
     pstmnt.setInt(3, 0); 

你必須包括你的SQL語句序列,而不是把它作爲一個參數傳遞。

的原因了setString適用於其他整數是presumeably因爲JDBC驅動程序可以強迫他們到整數(並且不能強迫「user_id_increment.nextval」)

+0

天才!非常感謝你 :) – user2297666