gpt4 book ai didi

java - 是否有办法将数据插入到具有来自 2 个不同表的 2 个不同外键的表中?

转载 作者:行者123 更新时间:2023-12-02 10:06:15 25 4
gpt4 key购买 nike

将数据从 jsp 插入数据库时​​遇到问题。我有 3 张 table :

Books(bookid)、Users(id)、Review(b_id,u_id) 、外键 b_id、u_id 引用上面 2 个表。这是到目前为止我的代码:

java

public void insert(ReviewModel model) {
try {
String b_id = null;
String u_id = null;
String sql = "insert into review (content,datePost,rating,b_id,u_id)\n"
+ "values (?,?,?,(select BookID from Books where BookID = '" + b_id + "'),(select id from Users where id = '" + u_id + "') )";
PreparedStatement statement = connection.prepareCall(sql);
statement.setString(1, model.getContent());
statement.setDate(2, (Date) (model.getDatePost()));
statement.setFloat(3, model.getRating());
statement.setInt(4, model.getBookid());
statement.setInt(5, model.getUserid());
statement.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(ReviewDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}

最佳答案

问题出在这里:

"...where BookID = '" + b_id + "')..."

statement.setInt(4, model.getBookid());
statement.setInt(5, model.getUserid());

设置的参数个数和问号必须匹配。您尝试将其绑定(bind)为命名参数,但是在 sql 中您只需将空字符串连接到它。因此,要么删除上面的参数 setter 行,然后填充字符串变量,例如

String b_id=mode.getBookId()

或使用“?”占位符:...其中 BookID = ? ...

(使用后一种,第一种容易受到sql注入(inject))

关于java - 是否有办法将数据插入到具有来自 2 个不同表的 2 个不同外键的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55322842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com