C# 列计数与第1c行的值计数不匹配
我不知道为什么会出现此错误: C代码:C# 列计数与第1c行的值计数不匹配,c#,mysql,C#,Mysql,我不知道为什么会出现此错误: C代码: using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;database=project;username=***;password=***;")) { MySqlCommand cmd = new MySqlCommand("INSERT INTO student (studentID, studentFi
using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;database=project;username=***;password=***;"))
{
MySqlCommand cmd = new MySqlCommand("INSERT INTO student (studentID, studentFirstName, studentLastName, studentUserName, studentPassword) VALUES (@userID, @, @FirstName, @LastName, @Username, @Password);");
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("userID", Convert.ToInt32(textBoxUserID.Text));
cmd.Parameters.AddWithValue("@FirstName", textBoxFirstName.Text);
cmd.Parameters.AddWithValue("@LastName", textBoxLastName.Text);
cmd.Parameters.AddWithValue("@UserName", textBoxUsername.Text);
cmd.Parameters.AddWithValue("@Password", textBoxPassword.Text);
connection.Open();
cmd.Connection = connection;
cmd.ExecuteNonQuery();
MessageBox.Show("Saved");
connection.Close();
}
这可能是因为我忽略了什么
错误:
MySql.Data中发生类型为“MySql.Data.MySqlClient.MySqlException”的未处理异常
其他信息:列计数与第1行的值计数不匹配
您正在values子句@userID@中添加一个附加参数 还要添加@before用户id
cmd.Parameters.AddWithValue("userID", Convert.ToInt32(textBoxUserID.Text));
应该是
cmd.Parameters.AddWithValue("@userID", Convert.ToInt32(textBoxUserID.Text));
格式化您的代码,您将清楚地看到所有语法问题:
string connectionString =
"datasource=localhost;port=3306;database=project;username=***;password=***;";
using (MySqlConnection connection = new MySqlConnection(connectionString)) {
connection.Open();
//DONE: keep sql readable
string sql =
@"INSERT INTO student (
studentID,
studentFirstName,
studentLastName,
studentUserName,
studentPassword)
VALUES (
@userID,
@FirstName, -- wrong @ param
@LastName,
@Username,
@Password);";
//DONE: wrap IDisposable into using
using (MySqlCommand cmd = new MySqlCommand(sql)) {
cmd.CommandType = CommandType.Text; // redundant
cmd.Connection = connection;
//DONE: separate code with new lines
// wrong parameter name
cmd.Parameters.AddWithValue("@userID", Convert.ToInt32(textBoxUserID.Text));
cmd.Parameters.AddWithValue("@FirstName", textBoxFirstName.Text);
cmd.Parameters.AddWithValue("@LastName", textBoxLastName.Text);
cmd.Parameters.AddWithValue("@UserName", textBoxUsername.Text);
cmd.Parameters.AddWithValue("@Password", textBoxPassword.Text);
cmd.ExecuteNonQuery();
}
}
MessageBox.Show("Saved");
谢谢这有助于一种非常不言自明的洗液。。你想让我用勺子喂你所有的东西吗..返回的错误消息是很自然的。不,我不想你做任何事。