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 ]
ファイル、コードからテーブル スキーマまで、すべてを 2 回および 3 回チェックしましたが、すべて問題ないように見えます。私は何が欠けていますか?