我没有将数据输入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)
答案 0 :(得分:3)
您可以明确指定要插入数据的列。如您所见,您也可以跳过某些列..
String sql =
"INSERT INTO Statistics3 (column1, column2, column4) VALUES ('" + ipv6Address
+ "','" + dateTime.trim() + "'," + battpercent + ")";
column1
,column2
和column4
是与您的值相对应的列 - ipv6Address
,datetime
和battpercent
..表..
所以,如果您插入了一个列 - column3
,那么您可以跳过它..它将获得您设置的默认值..
答案 1 :(得分:0)
在现有表Statistics3
中添加了一些列
有你的问题。值的数量与存在的列数不匹配。
您应该使用SQL语句的版本
insert into table (col1,col2) values (val1,val2)
答案 2 :(得分:0)
插入查询中给出的值与数据库中的列不匹配。确保查询中包含所有列(在表中)的值。