列数与第1行的值计数不匹配#c

时间:2014-04-12 22:43:20

标签: c# mysql excel

我正在尝试将数据从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

2 个答案:

答案 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进行一些研究。