0

我没有将数据输入 mysql

    void connectionDB() {
        try {
            Class.forName(fileReader.getdriver());
            String url = "jdbc:mysql://"+ fileReader.gethost() + ":" + fileReader.getDBport() +"/" + fileReader.getdbname();
            conn = DriverManager.getConnection(url, fileReader.getusername(),fileReader.getpasswd());
         } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException se) {
            se.printStackTrace();
        }
    }
public void snmp_mysql(String ipv6Address, String[] resString) {
try {
    stat = conn.createStatement();
    String sql =
        ("INSERT INTO Statistics3 VALUES ('" + ipv6Address + "','"
            + dateTime.trim() + "'," + battpercent + ")");
    stat.executeUpdate(sql);
    stat.close();

    System.out.println("updating");
 } catch (SQLException e) {
             e.printStackTrace();
             System.out.println("SQL statement is not executed!");
         }
    }

该代码没有显示任何错误,它在 MySQL 中显示空集(0.01 秒)。以前它工作正常并得到输出。我没有做任何改变。我不知道为什么它不起作用。我在另一个项目中学习了另一个类,并在现有表 Statistics3 中添加了一些列,并为该类使用了 mysql。我没有在这个类中进行任何更改。这不会影响 mysql 知道当我运行项目时,我'在输出中间出现这些错误

java.sql.SQLException: Column count doesn't match value count at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
4

3 回答 3

3

您可以明确指定要插入数据的列。如您所见,您也可以跳过某些列。

String sql =
    "INSERT INTO Statistics3 (column1, column2, column4) VALUES ('" + ipv6Address
                            + "','" + dateTime.trim() + "'," + battpercent + ")";

column1column2column4是与您的值相对应的列 - ipv6Addressdatetimebattpercent.. 在您的表中..

所以,如果你插入了一个列 - column3,那么你可以跳过它..它将获得你设置的默认值..

于 2012-10-04T05:29:51.410 回答
0

向现有表 Statistics3 添加了一些列

有你的问题。值的数量与存在的列数不匹配。

您应该使用 SQL 语句的版本

 insert into table (col1,col2) values (val1,val2) 
于 2012-10-04T05:45:43.360 回答
0

插入查询中给出的值与数据库中的列不匹配。确保您的查询中的所有列(在您的表中)都有值。

于 2012-10-04T05:57:32.530 回答