【问题标题】:A parameter is missing. [ Parameter ordinal = 1 ]?缺少一个参数。 [ 参数序数 = 1 ]?
【发布时间】:2012-08-28 13:58:51
【问题描述】:

我编写了一些基本代码来解析 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 ]

从文件、代码到表架构,我已经检查了两次和三次,一切看起来都很好。我错过了什么?

【问题讨论】:

  • 是否需要在参数之前设置命令文本?
  • 另外,您正在swith/case 语句中设置参数。您确定它们是为 CSV 的每一行设置的吗?
  • 这就是我一开始的想法,但尝试在添加参数之前放置命令文本,但没有任何乐趣 - 而且对于我一直在解析的其他文件,它一直运行良好。还是谢谢。

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


【解决方案1】:

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

【讨论】:

  • 当我注意到并修改它时有点困惑,但仍然收到错误。但是,当我明确设置像 cmd.Parameters.Add("@code", "Test"); 这样的参数时等等,它可以工作,所以在解析部分的某个地方一定有一个错误,我相信我会深入了解它。谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-03
相关资源
最近更新 更多