我如何跳过使用Java在PostgreSQL中插入自动生成的id号码?

时间:2012-04-23 05:52:58

标签: java postgresql servlets

我有以下代码使用java将数据输入数据库。但是,第一列实际上是由postgresql数据库自动生成的。现在,我将如何更改代码以使其不触及第一列?

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 个答案:

答案 0 :(得分:2)

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

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

这样,第一列的值将具有其默认(自动生成)值。

答案 1 :(得分:0)

假设我有两个名为“name”,“email”的列, 然后我可以使用此代码将值插入包含表的数据库(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/"然后访问你的表然后在空框上打勾标记