【问题标题】:MySQL insert with auto incrementMySQL插入自动增量
【发布时间】:2014-06-09 22:00:33
【问题描述】:

我正在尝试将一些数据从我的应用程序插入到我的数据库中,但我不断收到以下错误消息。

我的表中有 4 列,其中一列设置为自动递增。我怀疑这是导致错误的原因。

谁能帮我解决这个问题?

表格列:

Id (auto increment), userID(generated from application), username, name

代码:

    String sql = "insert into details values (?, ?, ?)";

    PreparedStatement preparedStatement = connect.prepareStatement(sql);
    preparedStatement.setInt(1, userID);
    preparedStatement.setString(2, username);
    preparedStatement.setString(3, name);
    preparedStatement.executeUpdate(); 

    preparedStatement.executeUpdate(sql);

错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, ?, ?)' at line 1

【问题讨论】:

    标签: java mysql


    【解决方案1】:

    试试这个:

    insert into details (userID, username, name) values (?, ?, ?)
    

    【讨论】:

    • 您好,您的意思是:String sql = "insert into rating (id, username, rating) values (?, ?, ?)";?没用。
    • 我不确定您的架构(您的问题有点不清楚)。请注意我的答案中的语法。您需要在插入中指定要为其应用数据的列。
    【解决方案2】:

    您必须将您的 sql 语句更改为:

    String sql = "insert into details (userID, username, name) values (?, ?, ?)";
    

    因为您没有添加表格的所有属性,所以您必须说出您添加了哪些参数。

    【讨论】:

    • @user3702643 db 中的 userid 是 int 吗?
    【解决方案3】:

    显然这只是一个简单的人为错误。写了两次执行语句。

        String sql = "insert into details values (?, ?, ?)";
    
        PreparedStatement preparedStatement = connect.prepareStatement(sql);
        preparedStatement.setInt(1, userID);
        preparedStatement.setString(2, username);
        preparedStatement.setString(3, name);
    
        preparedStatement.executeUpdate(); <-- Changed to preparedStatement.execute();
    
        preparedStatement.executeUpdate(sql); <-- Removed this line
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-05
      • 2023-03-30
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 2012-08-26
      相关资源
      最近更新 更多