我能够通过在Eclipse上编写sql代码(插入等)来执行sql语句,并且它被正确地显示在sql服务器中。连接已完成。但是,当用户想通过GUI界面(文本字段)添加数据并且数据需要自动存储到数据库中时,我该怎么办?
我在 ADD 按钮中的代码,但我收到错误:java.lang.NullPointerException !请帮忙..
try {
String pid = ProductID.getText();
String sql = "insert into Products_tbl values (' " +pid + " ')";
// Running the sql query
rs = st.executeQuery(sql);
int count = 0;
while (rs.next()) {
count = count + 1;
}
if (count == 1) {
JOptionPane.showMessageDialog(null, "Welcome");
}
else if (count > 1) {
JOptionPane.showMessageDialog(null,"Duplicate User Access Denied");
}
else {
JOptionPane.showMessageDialog(null, " User Not Found ");
}
}
catch (Exception ex) {
System.out.println("Error: " + ex);
}
1- 使用(' " +pid + " ')"
是不安全的,因为可能会发生SQL注入。请改用 SqlParameters。请检查:https://www.w3schools.com/sql/sql_injection.asp
2-我很确定这行有问题:rs = st.executeQuery(sql);
在这里,我敢打赌st
的值为空。确保您的连接变量已正确定义和设置,并且您创建了如下所示的语句:
st = connection.createStatement();
您也可以尝试执行更新(查询)而不是执行查询(查询),例如:
int flag = st.executeUpdate(query);
参考: https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate%28java.lang.String%29
3-请在catch博客中打印错误时使用printStackTrace()
方法,错误消息将更容易理解。
System.out.println("Error: " + ex.printStackTrace());