0

次のフィールドを持つ MS Access クエリでサニタイズ (特殊文字をエスケープ) したい: ('''2', 'Last Motion', '', 'DooMotion Plugin', 1, '-', True, #12/ 30/2012 07:55:00#、#12/30/2012 07:55:00#、#01/1/2001 00:00:00#)

特殊文字とそのエスケープ方法は、http ://support.microsoft.com/kb/826763/en-us に一覧表示されています。つまり、特殊文字は次のとおりです。@ " ' # % ~ ; [ ] { } ( ) は、括弧 [] で囲むことでエスケープできます。

私の質問は、正規表現を使用して一度にクエリ全体をサニタイズできるかどうかです。はいの場合、例を示してください。

それが不可能な場合は、フィールド レベルに分解して、各フィールドを個別にサニタイズできます。正規表現でこれを行う方法。

よろしく、ヨースト。

4

2 に答える 2

0

.NETでパラメータを使用するための解決策を知りたい人のために、ここにコードがあります:

Dim queryString As String = "INSERT INTO Devices (name, version) VALUES (@Name, @Version)"
' Open database connection.
Using connection As New OleDb.OleDbConnection(connectionString)
    Dim command As New OleDb.OleDbCommand(queryString)
    ' Strongly typed.
    command.Parameters.Add("@Name", OleDb.OleDbType.VarChar, 255).Value = Me.TextBox1.Text
    command.Parameters.Add("@Version", OleDb.OleDbType.Integer).Value = Me.TextBox2.Text
    command.Connection = connection 'Set the Connection to the new OleDbConnection

    ' Open the connection and execute the insert command.
    Try
        connection.Open()
        command.ExecuteNonQuery()
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try
End Using 'The connection is automatically closed when the code exits the Using block

繰り返しになりますが、正しい解決策を教えてくれたアントンに感謝します。

于 2013-01-16T22:10:39.233 に答える
0

Anton のアドバイスに従うには、.NET でクエリ パラメーターを使用するにはどうすればよいですか? これは私が現在使用しているコードです:

objConn = CreateObject("ADODB.Connection")
objCatalog = CreateObject("ADOX.Catalog")
objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strDatabase)
objCatalog.activeConnection = objConn
sql = "INSERT INTO Devices (Code, Name) VALUES ("'" & fCode & "','" & fName & "')"
objConn.execute(sql)
于 2013-01-15T20:04:18.457 に答える