[英]How to get auto generated primary key after inserting or updating record using jdbc template batch update?
[英]Java JDBC Get string primary key value after inserting data in table
书桌
isbn VARCHAR(25) NOT NULL PRIMARY KEY,
bookTitle VARCHAR(150) NOT NULL,
publisher VARCHAR (200) NOT NULL,
copyRight BLOB(45) NOT NULL,
isBookAvailable TINYINT(0) NOT NULL
UNIQUE(isbn)
作者表
authorId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
firtName VARCHAR(200) NOT NULL,
lastName VARCHAR(200) NOT NULL
作者目录表
authorIsbnId INT NOT NULL AUTO_INCREMENT,
isbn INT NOT NULL,
authorId INT NOT NULL,
PRIMARY KEY ( authorIsbnId ),
FOREIGN KEY (isbn) REFERENCES BookTable (isbn) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (authorId) REFERENCES AuthorTable (authorId) ON DELETE CASCADE ON UPDATE CASCADE
到目前为止,我知道如何使用Statement.RETURN_GENERATED_KEYS
获取 authorId,因为作者表的键是通过“AUTO_INCREMENT”自动生成的。 我需要来自 authorTable 的 authorId 和来自 BookTable 的 isbn 的两个主键,以便我能够在将数据保存到数据库之前在 AuthorBookTable 中创建关系。 我的问题是,如何从 BookTable 获取 isbn 编号,因为它是一个字符串而不是“AUTO_INCREMENTED”? 我试过调用Statement.RETURN_GENERATED_KEYS
但没有返回 Book isbn 主键的主键。 您的帮助将不胜感激,谢谢!
试试这个..
PreparedStatement ps = con.prepareStatement(insertsql, Statement.RETURN_GENERATED_KEYS)
您可以使用列名代替Statement.RETURN_GENERATED_KEYS
:
PreparedStatement ps = con.prepareStatement(insertsql, new String[]{"isbn"})
//put the name of the primary key column
ps.executeUpdate();
rs = ps.getGeneratedKeys();
if (rs.next()) {
generatedKey = rs.getString(1);
}
希望这能解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.