参见英文答案 java.sql.SQLException: Column count doesn’t match value count at row 1 2个我遇到了一个错误,java.sql.SQLException:Column count doesnt match value co...
参见英文答案 > java.sql.SQLException: Column count doesn’t match value count at row 1 2个
我遇到了一个错误,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:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
这是非常令人沮丧的,因为我一直在修改代码,比如将arg更改为所有字符串,但错误仍然出现.
public void readDataBase(int val, String d1, String d2, String d3, String d4 ) throws Exception {
try {
// This will load the MySQL driver, each DB has its own driver
Class.forName("com.mysql.jdbc.Driver");
// Setup the connection with the DB
connect = DriverManager
.getConnection("jdbc:mysql://localhost/MAXdb?"+ "user=root&password=");
// Statements allow to issue SQL queries to the database
statement = connect.createStatement();
// Result set get the result of the SQL query
resultSet = statement
.executeQuery("select * from MAXdb.emcsg");
writeResultSet(resultSet);
// PreparedStatements can use variables and are more efficient
preparedStatement = connect
.prepareStatement("insert into MAXdb.emcsg values (default,?, ?, ? , ?, ?)");
// Parameters start with 1
preparedStatement.setInt(1, val);
preparedStatement.setString(2, d1);
preparedStatement.setString(3, d2);
preparedStatement.setString(4, d3);
preparedStatement.setString(5, d4);
preparedStatement.executeUpdate();
preparedStatement = connect
.prepareStatement("SELECT id, Date, Time, Demand, SUPPLY from MAXdb.emcsg");
resultSet = preparedStatement.executeQuery();
writeResultSet(resultSet);
} catch (Exception e) {
throw e;
} finally {
close();
}
}
我的第二堂课:
public void Csvreader() throws IOException {
try {
// TODO code application logic here
CSVReader reader = new CSVReader(new FileReader("D:/TEST.csv"));
String nextLine[];
int i = 1;
Mysql sen = new Mysql();
while ((nextLine = reader.readNext()) != null) {
try {
sen.readDataBase( i, nextLine[0], nextLine[1], nextLine[2], nextLine[3] );
i = i+1;
} catch (Exception ex) {
Logger.getLogger(Opencsv.class.getName()).log(Level.SEVERE, null, ex);
}
}
} catch (FileNotFoundException ex) {
Logger.getLogger(Opencsv.class.getName()).log(Level.SEVERE, null, ex);
}
}
数据库:
字段类型排序规则属性空默认额外操作
id int(11)否无
日期文本utf8_general_ci否无
时间文字utf8_general_ci否无
需求文字utf8_general_ci否无
供应文本utf8_general_ci
解决方法:
好吧,我怀疑这是问题所在:
insert into MAXdb.emcsg values (default,?, ?, ? , ?, ?)
您没有指定每个参数的哪个列要引用 – 我怀疑您没有6列.即使表中有6列,最好在SQL中明确说明您要为每个参数使用哪一列.
本文标题为:列数与第1行的值计数不匹配JAVA mysql
基础教程推荐
- SpringBoot集成Graphql Query实战示例 2023-05-18
- Mybatis-plus设置某个字段值为null的方法总结 2023-03-11
- Java+TestNG接口自动化入门详解 2023-08-08
- 详解Hibernate注解方式的二级缓存 2023-07-31
- Java结构型设计模式之组合模式详解 2023-05-25
- Jsp+Servlet实现购物车功能 2023-08-01
- 详解Java单元测试之Junit框架使用教程 2022-11-11
- Java实现万年历效果 2023-01-02
- Mybatis插入语句默认值不生效的问题及解决 2023-02-11
- SpringFactoriesLoader类作用详解 2023-06-23