错误查询从 jTextField 插入到表 sql

Posted

技术标签:

【中文标题】错误查询从 jTextField 插入到表 sql【英文标题】:Error query insert from jTextField to table 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 工作台中开发我的查询,然后在任何源代码中实现它们。这样我就知道查询是正确的并给出了想要的结果。并且如上所述:使用准备好的语句! 【参考方案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 而不是 ''。然后它会自动增加。

以上是关于错误查询从 jTextField 插入到表 sql的主要内容,如果未能解决你的问题,请参考以下文章

sql将查询结果插入到表的每一列中

sql 将查询的结果集一次性插入到表变量中

将一个表的查询结果插入到另一个表中(oracle、mysql、sql 、GP)

将表数据类型从 SQL Server 转换为 Oracle 并将动态 SQL 数据插入到表数据类型

hive从查询中获取数据插入到表或动态分区

Laravel错误将数据从另一个表插入到表中