【问题标题】:How to get an automatically incremented column value when inserting a row into a table in mysql using java?使用java将行插入mysql中的表时如何获取自动递增的列值?
【发布时间】:2011-07-16 05:07:43
【问题描述】:

如何插入 table1 中:INSERT INTO table1 (description) VALUES ('Some test description here'); 并让它返回自动递增的 ID,以便我可以在 table2 中插入一行?不保证描述是唯一的。我正在使用 Java PreparedStatement 插入当前使用 execute() 的值

我的表结构如下:

CREATE TABLE table1 (
    table1ID INTEGER NOT NULL AUTO_INCREMENT,
    description VARCHAR(255) NOT NULL,
    CONSTRAINT PK_table1 PRIMARY KEY (table1ID)
);

CREATE TABLE table2 (
    table1ID INTEGER NOT NULL,
    personID INTEGER NOT NULL,
    CONSTRAINT PK_table2 PRIMARY KEY (table1ID, personID)
);

ALTER TABLE table2 ADD CONSTRAINT FK_table1_table2
FOREIGN KEY (table1ID) REFERENCES table1 (table1ID);

ALTER TABLE table2 ADD CONSTRAINT FK_table2_person
FOREIGN KEY (personID) REFERENCES person (personID);

【问题讨论】:

标签: java mysql select insert


【解决方案1】:

在插入成功完成后立即运行此查询:SELECT LAST_INSERT_ID()

【讨论】:

    【解决方案2】:

    试试这个:

    PreparedStatement st = con.prepareStatement(
                        "Insert into table1 (name) values ('test desc')",
                        Statement.RETURN_GENERATED_KEYS);
    
                st.executeUpdate();
    
                ResultSet rs = st.getGeneratedKeys();
                if(rs.next())
                {
                    int data = rs.getRow(); 
                    int id = rs.getInt(1);
                }
    

    观察数据和id的值。

    您不需要单独触发插入和选择查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-07
      • 2011-10-05
      • 1970-01-01
      • 2018-02-05
      • 2020-02-01
      • 2019-05-16
      • 2018-11-28
      • 1970-01-01
      相关资源
      最近更新 更多