【发布时间】:2014-01-27 18:47:09
【问题描述】:
请不要建议我使用 InternalFrame 或 Dialogs。我无法从头开始项目。 主题:我正在构建一个 GUI 程序来显示标记表。我参加了 3 个 JFrames 和 1 个简单的课程...
Frame1.java
它有 1 个 JTextField 可以输入 roll_no。 & 2 个按钮在 DB & showResult 中提供数据。 feedData 按钮调用 Frame2 和 showResult 按钮调用 Frame3。
Frame2.java
为了提供数据,有几个 JTextFields & Buttons 可以将内容传输到 mySQL DB。
Frame3.java
是一个从数据库中获取内容的结果窗口。
Support.java
包含静态变量和 getter-setter 方法
.....
.....//contains in Support.java
public boolean add() {
query = "Insert into table1 (enroll,Sname,Fname,sub1,sub2,sub3,sub4,sub5 )values(?,?,?,?,?)";
try {
PreparedStatement psmt = conn.prepareStatement(query);
psmt.setString(1, enroll);
psmt.setString(2, Sname);
psmt.setString(3, Fname);
psmt.setInt(4, sub1);
psmt.setInt(5, sub2);
psmt.setInt(6, sub3);
psmt.setInt(7, sub4);
psmt.setInt(8, sub5);
int y = 0;
y = psmt.executeUpdate();
if (y == 0) {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
add() 在 Frame2.java 中按下保存按钮时调用。 . .如果 catch 块正在执行,为什么 println(query) 打印 NULL
【问题讨论】:
-
您遇到了什么异常?我猜它试图创建语句失败。
-
旁注:使用
PreparedStatements,您的代码容易受到 SQL 注入的攻击 -
如果我不得不猜测,我会说你的问题是你还没有初始化
conn。 -
我猜,Ian McLaird... 你说的是 conn = DriverManager.getConnection(url,username,password);
-
是的。您确定在调用
add()方法之前已将有效的Connection对象分配给conn?如发布的那样,您的代码没有设置该变量(尽管它可能在您未发布的代码中的其他地方这样做)。您可以发布堆栈跟踪的相关部分吗?