繁体   English   中英

Java JDBC在表中插入数据后获取字符串主键值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM