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

按照 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 回答
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

再次感谢 Anton 为我指出正确的解决方案。

于 2013-01-16T22:10:39.233 回答