【问题标题】:Error query insert from jTextField to table sql错误查询从 jTextField 插入到表 sql
【发布时间】:2013-06-26 15:56:17
【问题描述】:

我有问题我从 4 个 JTextField 添加数据以将它们插入到表 sql 中 但它给了我关于查询的错误

这是代码

try {
    Class.forName("com.mysql.jdbc.Driver").newInstance();

    String connectionUrl = "jdbc:mysql://localhost:3306/admin";
    String connectionUser = "root";
    String connectionPassword = "123456";
    conn = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
    stmt = conn.createStatement();
    stmt.executeUpdate("INSERT INTO user(id, nom, login, mdp, statut) VALUES ('','"+jTextField2.getText()+ "','" +jTextField4.getText()+"','"+jTextField3.getText()+"','"+jPasswordField1.getText()+"'");

}catch (ClassNotFoundException ex) {
    Logger.getLogger(frame.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
    Logger.getLogger(frame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
    Logger.getLogger(frame.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
    Logger.getLogger(frame.class.getName()).log(Level.SEVERE, null, ex);
}

这是错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法

【问题讨论】:

  • 你缺少一个右括号VALUES(... )
  • WARN WARN WARN:你的代码容易被sql注入。 建议: 改用 PreparedStatement
  • 我通常在 Mysql 工作台中开发我的查询,然后在任何源代码中实现它们。这样我就知道查询是正确的并给出了想要的结果。并且如上所述:使用准备好的语句!

标签: java swing jdbc jtextfield


【解决方案1】:

您在查询中的 VALUES() 上缺少一个结束括号。

 stmt.executeUpdate("INSERT INTO user(id, nom, login, mdp, statut) VALUES ('','"+jTextField2.getText()+ "','" +jTextField4.getText()+"','"+jTextField3.getText()+"','"+jPasswordField1.getText()+"')");

【讨论】:

  • 是的,我添加了它,但现在关于 id 的问题它给了我:java.sql.SQLException: Incorrect integer value: 'null' for column 'id' at row 1
  • 那是因为你的mysql服务器处于严格模式,所以你不能在整数字段中输入非整数。我不熟悉严格模式,但是对于 id 字段,不要使用'',而是使用不带任何引号的NULL,或者0。如果做不到这一点,请不要在您的列列表中指定id,这是投注选项
  • 啊,太好了,如果有人搜索,我会在那里留下评论
  • 不,我没有在 VALUES() 中写列 id,因为它是自动递增的,所以不需要写,谢谢
  • 使用 null 而不是 ''。然后它会自动增加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多