2012-04-23 33 views
0

我有以下代碼使用java將數據輸入到數據庫中。但是,第一列實際上是由postgresql數據庫自動生成的。現在,我將如何更改代碼,使其不觸及第一列?如何跳過使用Java在PostgreSQL中插入自動生成的id號?

String sql = "insert into members values (?,?,?,?)"; 
      PreparedStatement pst = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); // I used RETURN_GENERATED_KEYS, but I don't know how to utilize it. 
      pst.setInt(1, memid); // I want this line to be skipped 
      pst.setInt(2, birthyear); 
      pst.setString(3, familyname); 
      pst.setString(4, givenname); 
      // Executing the insert 
      pst.executeUpdate(); 

回答

2

包括要在SQL插入字段列表:

insert into members (birthyear, familyname, givenname) values (?,?,?) 

這樣的第一列中的值將其默認(自動生成)值。

+0

列「memid」中的空值違反非空約束 – krest 2012-04-23 06:31:09

+0

是設置爲「串行」的中間列? – Hao 2012-04-23 06:32:33

+0

確保「memid」是自動生成的列 – 2012-04-23 06:33:10

0

假設我有兩個列名爲「姓名」,「電子郵件」, 然後我可以使用此代碼插入包含表(std_tb) 兩列

String s_name="ayman"; 
String s_email="mamstricks"; 
PreparedStatement ps=con.prepareStatement("insert into std_tb(name,mail) values(?,?)"); 
ps.setString(1, s_name); 
ps.setString(2, s_email); 
ps.executeUpdate(); 

,如果我想值數據庫只插入第二列,然後我可以使用此代碼包含同一表中的兩列

String s_email="ayman"; 
PreparedStatement ps=con.prepareStatement("insert into std_tb(mail) values(?)"); 
ps.setString(1, s_email); 
ps.executeUpdate(); 

但不要忘了,設置第一列具有空值,如果您使用WAMP或XAMPP然後,你可以做這通過去"http://localhost/phpmyadmin/"然後訪問你的表,然後把刻度線放在空框

相關問題