我正在尝试将数据从xls加载到mysql数据库,但是,我收到此错误:
Column count doesn't match value count at row 1
在这个循环中,我试图迭代地选择我的excel的第2列中的所有值并将其插入db(不包括第一行,因为xls中的第一行是我的列的名称)。 rowcount是487。
for (int x = 2; x < rowCount; x++)
{
string str = xlRange.Cells[x, 2].Text;
string query = "INSERT INTO feture (F1) VALUES (" + str + ")";
MessageBox.Show(x.ToString());
MySqlCommand cmd = new MySqlCommand(query, conect);
cmd.ExecuteScalar();
}
那我在哪里有问题? THX
答案 0 :(得分:1)
字符串值必须用单引号'
包围。
更改:
string query = "INSERT INTO feture (F1) VALUES (" + str + ")";
致:
string query = "INSERT INTO feture (F1) VALUES ( '" + str + "' )";
答案 1 :(得分:0)
您需要将单引号与您的值一起使用,但更重要的是,您应该使用参数化查询实例化字符串连接:
string query = "INSERT INTO feture (F1) VALUES (@value)";
MySqlCommand cmd = new MySqlCommand(query, conect);
cmd.Parameters.AddWithValue("@value", str);
cmd.ExecuteScalar();
如果您想知道为什么对SQL Injection
进行一些研究。