没有从java获取数据到mysql

时间:2012-10-04 05:03:06

标签: java mysql

我没有将数据输入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)

3 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

  

在现有表Statistics3

中添加了一些列

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

您应该使用SQL语句的版本

 insert into table (col1,col2) values (val1,val2) 

答案 2 :(得分:0)

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