0

私はVS2010を使用し、VBでコーディングする初心者プログラマーです。複数のXMLファイルを解析してSQLServer08の単一のテーブルにデータを格納するWindowsフォームアプリケーションがあります。アプリは問題なくXMLを解析しますが、私の問題は、INSERTクエリを実行すると停止することです。一重引用符を含むフィールド(つまり、文字列 "O'Leary、John"を含むCustomerName)全体。リストビューは一重引用符をそのままにして問題なく表示されるため、問題の原因は実際のINSERTsqlクエリにあると想定しています。エスケープするために一重引用符を2倍にしようとしましたが、そうするとクエリが実行されず、代わりにエラーメッセージが表示されます。データが私のテーブルに書き込まれるように、この文字列の単一引用符を効果的にエスケープ(または置換)する方法を誰かが提案できますか?このアプリを使用して数千のXMLファイルを解析しているため、各XMLファイルを個別に調べて、問題のある文字列を「修正」することはできません。これは、リストビューからデータを取得してテーブルにロードしようとしているコードのサンプルです。

query1.CommandText = "INSERT INTO Cust_Tbl(CustomerID,CustomerName,SaleDate)
                      VALUES " & "('" & lvitem.subitems(0).Text & "','" _ 
                      & lvitem.subitem(1).Text & "','" & lvitem.subitems(2).Text & "')"
                      query1.ExecuteNonQuery()
4

1 に答える 1

0

a) SQL インジェクション ハッキングから保護する、b) アポストロフィとコマンド文字を自動的に処理する、パラメーター化されたクエリを使用する

http://csharp-station.com/Tutorial/AdoDotNet/Lesson06を参照してください。

チュートリアルはたくさんあるのに

于 2012-12-10T21:23:38.623 に答える