您好我的目标是使用数据库中的值加载组合框,下面的代码工作正常,一个问题我得到第一个项目的两个,所以我必须做些什么来防止这个
public void loadCombos() {
try {
try {
String cs = "jdbc:mysql://localhost:3307/booksalvation6";
String user = "root";
String password = "letmein";
jComboBox2.removeAllItems();// make sure old data gone
PreparedStatement pstpost;
ResultSet rspost;
conCombos = DriverManager.getConnection(cs, user, password);
for (int i = 1; i < 11; i++) {
String querypost = "select * from post "
+ "WHERE postage_id =" + i;
// load postage selections
pstpost = conCombos.prepareStatement(querypost);
rspost = pstpost.executeQuery();
while (rspost.next()) {
String Mypost = rspost.getString(6);
jComboBox2.addItem(Mypost);
}
}
} catch (SQLException ex) {
Logger.getLogger(BasicFrame.class.getName()).log(Level.SEVERE, null, ex);
}
conCombos.close();
} catch (SQLException ex) {
Logger.getLogger(BasicFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:0)
您正在使用PreparedStatement
但未正确使用。
由于您只查找一列来获取postage_id介于1到10之间的所有列值。
您可以在单个查询中实现它:
select unique(combo_value_column_name) from post
where postage_id>=? and postage_id<=?
通过调用PreparedStatement#setInt(index,value)
设置参数,将其设置为1和10。
只需提取单列,只提取唯一值。
上的 Java Tutorial 下进行了更好的解释而不是先调用JComboBox#addItem()
准备整个列表,然后最后设置一次。
最后注意:遵循Java命名约定。