gpt4 book ai didi

java - 如何从数据库中获取值到 jcombobox?

转载 作者:行者123 更新时间:2023-11-29 02:52:46 25 4
gpt4 key购买 nike

我试图从 MySQL 数据库中检索数据到 JComboBox 但我没有得到它,因为当我将 isbn 写入 JTextField 以搜索一本书时,所有 ID 出现 4 次,最后出现我想要的 ID但是2次。我想将数据放入 JComboBox,只是具有我正在搜索的 isbn 的 ID,boxBookId 是我的 JComboBox。我使用 NetBeans。有人可以帮助我吗?提前致谢!

这是我的代码:

private void fieldIsbnKeyReleased(java.awt.event.KeyEvent evt) {                                      
try {
String url = "jdbc:mysql://localhost/library";
Connection con = DriverManager.getConnection(url,"root","");
Statement stm = con.createStatement();

String sql = "SELECT id, book, author FROM books WHERE isbn LIKE '%" +fieldIsbn.getText()+ "%' ";
String sql2 = "SELECT COUNT(isbn) FROM books WHERE isbn LIKE '%" +fieldIsbn.getText()+ "%' ";

pstm = con.prepareStatement(sql);
rs = pstm.executeQuery();
pstm2 = con.prepareStatement(sql2);
rs2 = pstm2.executeQuery();

while (rs.next()) {
boxBookId.addItem(rs.getString("id"));
String val1 = rs.getString("book");
fieldBook.setText(val1);
String val2 = rs.getString("author");
fieldAuthor.setText(val2);
}
while (rs2.next()) {
fieldAvailableBooks.setText(rs2.getString(1));
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
}

最佳答案

在将查询结果添加到 boxBookId 之前,您需要删除任何现有元素,例如通过在 while 循环之前调用 boxBookId.removeAllItems()(以防止在查询失败时删除它们)。

至于我提到的安全问题(你真的应该自己仔细阅读),使用PreparedStatement设置参数(只构造一次并重复使用):

//outside your method: construct this only once and reuse inside your method
pstm = con.prepareStatement("SELECT id, book, author FROM books WHERE isbn LIKE ?");

//in your method:
pstm.setString(1, "%" + fieldIsbn.getText() + "%" );
rs = pstm.executeQuery();

如您所见,我重用了您已经创建的 PreparedStatement pstm。关键是复用它,用它来设置参数。否则使用 PreparedStatement 没有多大意义(我的意思是直接将参数值附加到 SQL 并在每次调用之前重新创建语句)。

关于java - 如何从数据库中获取值到 jcombobox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33961142/

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