【问题标题】:How to work with MySQL auto increment columns?如何使用 MySQL 自动递增列?
【发布时间】:2017-09-09 14:10:41
【问题描述】:

我尝试在 Java 程序中使用 MySQL auto_increment。但是我遇到了这种类型的错误:

Sep 09, 2017 7:36:16 PM demosub jButton1ActionPerformed SEVERE: null
java.sql.SQLException: No value specified for parameter 1

这是我的程序:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        String url = "jdbc:mysql://localhost:3306/anadha";
        String uname1 = "root";
        String password = "csrajesh";
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection(url, uname1, password);
        PreparedStatement pst = con.prepareStatement("INSERT into employee (time, name) VALUES (?,?)", Statement.RETURN_GENERATED_KEYS);
        pst.setString(2, nme.getText());
        pst.executeUpdate();
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(demosub.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(demosub.class.getName()).log(Level.SEVERE, null, ex);
    }

【问题讨论】:

  • 让它在命令行应用程序中运行。首先,它应该以几乎完全相同的方式工作“在 java swing 程序中”.
  • 哪一列是自动增量、时间或名称或其他?
  • 请提供您尝试插入的表的结构。将其理解为 CREATE 语句是最容易理解的,但请确保我们能够分辨出哪一列是 auto_increment 列以及每列的类型。
  • +-------+-------------+------+-----+------ ---+----------------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +-------+-------------+------+-----+---------+---- ------------+ |编号 |整数(11) |否 |优先级 |空 |自动增量 | |姓名 | varchar(45) |否 | |空 | | +-------+-------------+------+-----+---------+---- ------------+ 2 行(0.00 秒)

标签: java mysql sql jdbc sqlexception


【解决方案1】:

您忘记绑定第一个参数,因此出现错误。您只设置第二个参数的值

pst.setString(2, nme.getText());

你应该有另一行说 sth like :

pst.setString(1, "ValueYouWant");

或者

pst.setTimestamp(1, <function_that_returns_a_timestamp>);

取决于该列的预期值类型。

如果您不想自己添加当前时间戳,只需在表中将time 列默认值设置为 CURRENT_TIMESTAMP。

【讨论】:

  • @rajeshdeva 问题可能是表结构与您的代码所做的假设之间存在脱节。我强烈建议使用表的 SQL 更新您的问题(CREATE 语句会很好用)。如果您不确定如何获取 SQL,请尽可能准确地描述表和列。
猜你喜欢
  • 2011-09-25
  • 2016-03-07
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 2018-05-25
相关资源
最近更新 更多