0

我有以下代码使用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();
4

2 回答 2

2

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

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

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

于 2012-04-23T06:15:12.210 回答
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/"访问您的表格然后在空框上打勾

于 2014-03-02T08:06:48.277 回答