csvファイルから一行読み取り、sqlへ書き込むのを繰り返したいのですが、
一行目は通るのですが、二回目のcmd.ExecuteNonQuery();を実行時にエラーが出てしまいます。
原因と解決策を教えていただけませんか?
よろしくお願いいたします。
コード
C#
1 class Ccsv 2 { 3 string csvLine; 4 string[] csvData; 5 //csvの読み込み 6 public void Readcsv(string csvpass, string serverInformation) 7 { 8 if (File.Exists(csvpass)) 9 { 10 StreamReader csvFile = new StreamReader(csvpass, Encoding.GetEncoding("UTF-8")); 11 string constr = serverInformation; 12 var con = new SqlConnection(constr); 13 var cmd = con.CreateCommand(); 14 15 con.Open(); 16 try 17 { 18 do 19 { 20 //csvファイルの読み込み 21 csvLine = csvFile.ReadLine(); 22 csvData = csvLine.Split(','); 23 24 //sqlへ書き出し 25 cmd.CommandText = @"INSERT INTO ExcelTest (品名, 品番) VALUES (@itemName, @itemNum)"; 26 cmd.Parameters.Add(new SqlParameter("@itemName", csvData[2])); //品名 27 cmd.Parameters.Add(new SqlParameter("@itemNum", int.Parse(csvData[3]))); //品番 28 cmd.ExecuteNonQuery(); 29 } while (csvFile.Peek() != -1); 30 } 31 finally 32 { 33 con.Close(); 34 csvFile.Close(); 35 } 36 } 37 } 38 }
エラー文
System.Data.SqlClient.SqlException: '変数名 '@itemName' は既に宣言されています。変数名は、クエリ バッチまたはストアド プロシージャ内で一意にしてください。'
回答3件
あなたの回答
tips
プレビュー