我已經編寫了一些基本代碼來解析CSV文件,並在運行時將數據輸入到數據庫中。此代碼的變體(針對不同的分隔符和列)對於衆多的csv文件一直工作正常,但由於某種原因,現在這段代碼給了我一個2列文件的錯誤。參數丟失。 [參數序數= 1]?
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的每一行嗎? –
這就是我一開始以爲的想法,但試圖在添加參數之前先加入命令文本,而沒有喜悅 - 再加上它對於我一直解析的其他文件一直工作正常。不管怎麼說,還是要謝謝你。 – Anonymous