C# 缺少一个参数。[参数序号=1]?

C# 缺少一个参数。[参数序号=1]?,c#,sql,parameters,sql-server-ce,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 (!

我已经编写了一些基本代码来解析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();
    }
}

从文件、代码到表模式,我对所有内容都进行了双重和三重检查,看起来都很好。我缺少什么?

现在,您的代码只会在找到选项卡(
\t
)时添加参数。如果每行不以制表符结尾,则不会添加第二个参数。这可能是您的问题。

是否需要在参数之前设置命令文本?此外,您正在使用
swith/case
语句设置参数。您确定CSV的每一行都设置了这些参数吗?这是我最初的想法,但在添加参数之前尝试了放置命令文本,但没有任何乐趣-另外,对于我一直在解析的其他文件,它工作得很好。不管怎样,谢谢。我注意到这有点困惑,并修改了它,但仍然收到了错误。但是,当我明确地设置cmd.Parameters.Add(“@code”,“Test”)等参数时;等,它的工作,所以一定有一个错误的地方在解析部分,我相信我会得到它的底部虽然。谢谢
SqlCeException - A parameter is missing. [ Parameter ordinal = 1 ]