【发布时间】:2016-07-26 15:02:12
【问题描述】:
String s1 = PasswordText4.getText();
String s2 = ConfirmText4.getText();
String s3 = NameText4.getText();
String s4 = UsernameText4.getText();
String s5 = jLabel16.getText();
if (PasswordText4.getText().equals(ConfirmText4.getText()) && s1.length() != 0 && s3.length() != 0 && s1.length() >= 4 && s2.length() >= 4) {
try {
String sql
= "BEGIN"
+ "UPDATE LOGIN SET USERNAME = ?, PASSWORD = ?, NAME = ?"
+ "WHERE USERNAME = ?;"
+ "commit;"
+ "END;";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setString(1, UsernameText4.getText());
cstmt.setString(2, PasswordText4.getText());
cstmt.setString(3, NameText4.getText());
cstmt.setString(4, jLabel16.getText());
//System.out.println(jLabel16.getText());
int dialogButton = JOptionPane.YES_NO_OPTION;
int dialogResult = JOptionPane.showConfirmDialog(null, "Are you sure you want to update?", "Warning", dialogButton);
if (dialogResult == JOptionPane.YES_OPTION) {
cstmt.execute();
JOptionPane.showMessageDialog(null, "Information Updated");
jLabel15.setText(NameText4.getText());
jLabel16.setText(UsernameText4.getText());
jLabel17.setText(PasswordText4.getText());
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
这段代码有什么问题?当我尝试更新我的数据时,无效的 SQL 类型:
显示 sqlKind = UNINITIALIZED 错误。
请帮我找到解决问题的方法。
提前感谢您的回答。
【问题讨论】:
-
您缺少在查询部分之间添加空格:“ UPDATE...等。您的查询实际上以
BEGINUPDATE开头。考虑打印您的sql字符串以查看是什么错了。 -
在 IntelliJ 中遇到了同样的问题。 IntelliJ 以蓝色突出显示“Update”、“AND”、“FROM”等关键字,如果未突出显示,则您知道关键字之前的上一行需要一个空格。