缺少参数。 [参数序数= 1]?

时间:2012-08-28 13:58:51

标签: c# sql parameters sql-server-ce

我编写了一些基本代码来解析CSV文件,并在运行时将数据输入到数据库中。这些代码的变化(针对不同的分隔符和列)已经适用于许多csv文件,但是由于某种原因,现在这段代码给了我一个2列文件的错误。

using (StreamReader reader = new StreamReader(@"C:\Rawdata\Salesman.csv"))
{
    string line;
    StringBuilder query = new StringBuilder();

    while (!reader.EndOfStream)
    {
        line = reader.ReadLine();
        StringBuilder segment = new StringBuilder();

        for (int i = 0, segno = 0; i < line.Length; i++)
        {
            if (line[i] != '\t')
            {
                segment.Append(line[i]);
            }
            else
            {
                switch (segno)
                {
                    case 0:
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddWithValue("@code", segment.ToString());

                        break;
                    case 1:
                        cmd.Parameters.AddWithValue("@name", segment.ToString());
                        break;
                    default:
                        break;
                }
                segno++;
                segment.Clear();
            }
        }

        delCmd = "INSERT INTO sales_codes (code, name) VALUES (@code, @name)";
        cmd.CommandText = delCmd;

        cmd.ExecuteNonQuery();

        query.Clear();
    }
}

抛出的异常是:

SqlCeException - A parameter is missing. [ Parameter ordinal = 1 ]

我已经对从文件,代码到表架构的所有内容进行了双重和三重检查。我错过了什么?

1 个答案:

答案 0 :(得分:1)

就像现在一样,您的代码只会在找到标签(\t)时添加参数。如果每一行都没有以制表符结尾,则不会添加第二个参数。这可能是你的问题。