2012-04-23 90 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/"然后访问你的表,然后把刻度线放在空框

相关问题