SQL Serverデータベースにデータテーブルの値を挿入するコマンドを実行すると、エラーが発生します。C#SQL文が機能しない
'、'の近くに構文が正しくありません。
マイコード:
for (int i = 1; i < dt.Rows.Count; i++) // i = 1 instead of 0 because of the header row
{
wipSql = "INSERT INTO tblWIP ([FSR Number], [Customer Name], REGN_NM, SUBREGN_NM, [EMP/SUPPLIER Name], [INVTY DATE], " +
"[COST CATEGORY], [PL&M AMOUNT], [LABOR AMOUNT], [T&L PERDIEM], [MEMO COST], [EDI SEQ#], [INVOICE NUMBER], [Grand Total], Age, Business) " +
"VALUES ('"
+ dt.Rows[i]["FSR Number"].ToString().Trim() + "', '"
+ dt.Rows[i]["Customer Name"].ToString().Trim() + "', '"
+ dt.Rows[i]["REGN_NM"].ToString().Trim() + "', '"
+ dt.Rows[i]["SUBREGN_NM"].ToString().Trim() + "', '"
+ dt.Rows[i]["EMP/SUPPlier Name"].ToString().Trim() + "', '"
+ dt.Rows[i]["INVTY DATE"].ToString().Trim() + "', '"
+ dt.Rows[i]["COST CATEGORY"].ToString().Trim() + "', "
+ dt.Rows[i]["PL&M AMOUNT"].ToString().Trim() + ", "
+ dt.Rows[i]["LABOR AMOUNT"].ToString().Trim() + ", "
+ dt.Rows[i]["T&L PERDIEM"].ToString().Trim() + ", "
+ dt.Rows[i]["MEMO COST"].ToString().Trim() + ", '"
+ dt.Rows[i]["EDI SEQ#"].ToString().Trim() + "', '"
+ dt.Rows[i]["INVOICE NUMBER"].ToString().Trim() + "', "
+ dt.Rows[i]["Grand Total"].ToString().Trim() + ", "
+ dt.Rows[i]["Age"].ToString().Trim() + ", '"
+ dt.Rows[i]["Business"].ToString().Trim() + "')";
SqlCommand cmdWIP = new SqlCommand(wipSql, localConnection);
cmdWIP.ExecuteNonQuery();
}
あなたは 'wipSql'を印刷し、得られた出力クエリを見てみたのですか?これを試してみてくださいお勧めの方法は、SQLのパラメータを使用して、SQL文を作成するために文字列を追加しないでください – ughai
あなたのエラーに基づいて私はいくつかの引用符が不足していると感じています。 –
+1を使用すると、パラメータを使用することが推奨されます。お客様の名前に引用文が含まれている場合(例: "O'Connor")、SQLインジェクション攻撃の場合は、エラーのために自分自身を広げておきます。 https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.prepare(v=vs.110).aspx – racraman