我想知道我在这里缺少什么,我无法比较这个' id'从Textfield到数据库中的数据。
例如:
如果TextField1 ==数据库中的数据。
输出:由GSW扫描。
Connection con = connect.getConnection();
String query = "SELECT * FROM item_list WHERE id = ?";
Statement st;
ResultSet rs;
int id;
try{
st = con.createStatement();
rs = st.executeQuery(query);
while(rs.next()){
id = rs.getInt("id");
if(Integer.parseInt(TF[0].getText()) == id){
System.out.println(id);
}
}
}catch(SQLException exc){
System.out.println("Not Found!");
}
请检查图像输出。 我在下面附上了图片文件。
答案 0 :(得分:1)
这是我看到的一些错误
"SELECT * FROM item_list WHERE id = ?";
中使用参数,因此请使用PreparedStatement
PreparedStatement ps = connection.preparedStatement(query);
ps.setInt(1, Integer.parseInt(TF[0].getText()));
这可能不是一切......
当然,现在您只获得具有该ID的行,您只需检查是否至少有一行返回以验证它是否存在。
答案 1 :(得分:1)
exc.printStackTrace()
部分使用catch
。
PreparedStatement p = con.prepareStatement("SELECT * FROM item_list WHERE id = ?");
p.setString(1, TF[0].getText() ); //VALUE_FROM_YOUR_TEXT_INPUT
答案 2 :(得分:0)
如果您的对象不为空,则可以intValue()
使用Integer
对象
while(rs.next()){
id = rs.getInt("id");
if(Integer.parseInt(TF[0].getText()).intValue() == id){
System.out.println(id);
}
}
答案 3 :(得分:0)
您未在语句中设置id参数的值。不熟悉Java,但在C#中它会是这样的
statement.Parameters.AddWithValue("@id", id)
答案 4 :(得分:0)
谢谢你们!我一直在努力阅读你的所有建议,我已经找到并调试了它。感谢有人说我需要查看我能在捕获中得到什么消息。
感谢您的所有帮助。
Connection con = connect.getConnection();
String query = "SELECT * FROM item_list";
Statement st;
ResultSet rs;
int id;
try{
st = con.createStatement();
rs = st.executeQuery(query);
while(rs.next()){
id = rs.getInt("id");
if(Integer.parseInt(TF[0].getText()) == id){
System.out.println(id);
JOptionPane.showMessageDialog(null, "FOUND!");
}
else{
JOptionPane.showMessageDialog(null, "Not Found!");
}
}
}catch(SQLException exc){
JOptionPane.showMessageDialog(null, exc.getMessage());
}