Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列计数不为';第1行的值计数不匹配-Java SQL_Java_Mysql_Database - Fatal编程技术网

列计数不为';第1行的值计数不匹配-Java SQL

列计数不为';第1行的值计数不匹配-Java SQL,java,mysql,database,Java,Mysql,Database,我得到了“第1行的列计数与值计数不匹配”,但我似乎无法修复它。我试图更改引号和数据类型,但仍然没有成功。有人能看出我哪里出了错吗 public void actionPerformed(ActionEvent arg0) { if(!textField.getText().isEmpty() && !textField_1.getText().isEmpty() && !textField_2.getText().isEmpty() &am

我得到了“第1行的列计数与值计数不匹配”,但我似乎无法修复它。我试图更改引号和数据类型,但仍然没有成功。有人能看出我哪里出了错吗

public void actionPerformed(ActionEvent arg0) {
            if(!textField.getText().isEmpty() && !textField_1.getText().isEmpty() && !textField_2.getText().isEmpty() && !textField_3.getText().isEmpty() && !textField_4.getText().isEmpty() && !textField_5.getText().isEmpty() && !textField_6.getText().isEmpty() && !textField_7.getText().isEmpty())
            {
                String moduleName = textField.getText();
                String studId = textField_1.getText();
                String sFName = textField_2.getText();
                String sLName = textField_3.getText();
                int weekNo = Integer.parseInt(textField_4.getText());
                int lAttend = Integer.parseInt(textField_5.getText());
                int tAttend = Integer.parseInt(textField_6.getText());
                int wAttend = Integer.parseInt(textField_7.getText());

                lh.addStud(moduleName, studId, sFName, sLName , weekNo, lAttend, tAttend, wAttend);
            }
            else
            {
                lblNewLabel_4.setText("You have Missing Field");
            }
            fillDB();
           }
        });
以下是我的疑问:

String aSQuery = "INSERT INTO Group6_Register VALUES ('" + moduleName + "', '" + studId + "', '" + sFName + "', '" +  sLName +"', '" +  weekNo + "', '" +  lAttend + "', '"  + tAttend + "', '" + wAttend + "')";
            statements = connection.prepareStatement(aSQuery);
            statements.executeUpdate();

这是因为您使用的是
INSERT
语句的隐式类型。服务器希望您为所有列提供了所有值,但您没有,这就是它引发异常的原因

最好的方法是显式声明值绑定到的列名,例如

INSERT INTO tableName (colA, colB, colC)
VALUES ('a','b','c')
只有在为所有列指定了所有值时,才能使用这种类型的语法,例如,有一个表有3列,然后可以使用这种语法

INSERT INTO tableName  VALUES ('a','b','c')

这是因为您使用的是
INSERT
语句的隐式类型。服务器希望您为所有列提供了所有值,但您没有,这就是它引发异常的原因

最好的方法是显式声明值绑定到的列名,例如

INSERT INTO tableName (colA, colB, colC)
VALUES ('a','b','c')
只有在为所有列指定了所有值时,才能使用这种类型的语法,例如,有一个表有3列,然后可以使用这种语法

INSERT INTO tableName  VALUES ('a','b','c')
“列计数与第1行的值计数不匹配”

通常在values子句中定义的列与实际表列不匹配时发生

假设您的桌子有4个coulmns,col1 col2 col3 col4

现在您只想将数据插入col2、col3、col4

您的insert语句应该是

Insert into table (col2, col3, col4) values(col2val, col3val, col3val)
但是,我强烈建议您在使用JDBC执行sql查询时使用

   String query= "Insert into table (col2, col3, col4) Values(?,?,?)";
   Statement st = conn.preparedStatement(query);
   st.setString(1, col2value);
   st.setString(2, col3Val); 
   st.setString(3, col4Val);
“列计数与第1行的值计数不匹配”

通常在values子句中定义的列与实际表列不匹配时发生

假设您的桌子有4个coulmns,col1 col2 col3 col4

现在您只想将数据插入col2、col3、col4

您的insert语句应该是

Insert into table (col2, col3, col4) values(col2val, col3val, col3val)
但是,我强烈建议您在使用JDBC执行sql查询时使用

   String query= "Insert into table (col2, col3, col4) Values(?,?,?)";
   Statement st = conn.preparedStatement(query);
   st.setString(1, col2value);
   st.setString(2, col3Val); 
   st.setString(3, col4Val);

只需明确定义插入的列

INSERT INTO table (col1,col2,coln) VALUES ( val1, val2, val3 )

否则,您必须为每个字段设置一个值,只需明确定义插入的列即可

INSERT INTO table (col1,col2,coln) VALUES ( val1, val2, val3 )

否则,您必须为每个字段设置一个值

我猜
PK
这里省略了
Group6\u Register
的字段,这里是
prepareStatement
吗?我猜
PK
这里省略了
Group6\u Register
的字段,这里是
prepareStatement
吗?谢谢,它起作用了。非常清楚和有用。最后一件事,插入新数据后如何刷新JTable?我必须重新运行它才能看到更新。@user1781232在我放置tableModel.fireTableDataChanged()时检查该链接;我得到一个错误,说“Syntax error on token”fireTableDataChanged,这个标记后面应该有标识符“我建议您首先自己解决这个问题,如果您不能解决这个问题,请将其作为一个新问题发布以寻求帮助。但我相信你自己能弄明白:)谢谢你,成功了。非常清楚和有用。最后一件事,插入新数据后如何刷新JTable?我必须重新运行它才能看到更新。@user1781232在我放置tableModel.fireTableDataChanged()时检查该链接;我得到一个错误,说“Syntax error on token”fireTableDataChanged,这个标记后面应该有标识符“我建议您首先自己解决这个问题,如果您不能解决这个问题,请将其作为一个新问题发布以寻求帮助。但我相信你可以自己解决:)