我有这个sqlite数据库,我可以运行查询“从条形码中选择*,其中barcode ='CFMS-ZUFH-WRVY-EXAA'并获得单行返回。但是在我的Java应用程序中,当我运行几乎相同的sql时,它是返回一个空的结果集。变量last、email等是JTextFields,尽管问题在它们之前。if语句甚至不执行,如果我在它之前运行rs.next()并设置if(true)我得到一个错误提示 ResultSet 已关闭。
try {
db.dbopen(config.getdbfolder(),config.getdbname());
// barcode-barcode.replaceAll("\\s","");
ResultSet rs=db.query("select * from barcode where barcode=?",barcode);
if (rs.next()) {
first.setText(rs.getString("first_name"));
System.out.println(rs.getString("first_name"));
last.setText(rs.getString("last_name"));
email.setText(rs.getString("email"));
phone.setText(rs.getString("phone"));
subject.setSelectedItem(rs.getString("subject"));
Boolean selected;
if (rs.getString("baronly").equals("false")) selected=false;
else selected=true;
barcodebox.setSelected(selected);
update=true;
}
db.conn.close();
} catch ( SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是方法查询。
public ResultSet query(String sql, String barcode) throws SQLException {
// TODO Auto-generated method stub
PreparedStatement prep =conn.prepareStatement(sql);
prep.setString(1, barcode);
ResultSet rs= prep.executeQuery();
prep.close();
return rs;
}