Классический ASP, кавычки в SQL обрабатываются по-разному в Jet.OLEDB.4.0 и Microsoft Access mdb driver - PullRequest
0 голосов
/ 01 марта 2019

Я поддерживаю некоторый унаследованный классический код ASP посредством аппаратного переезда.Код запрашивает локальную базу данных Access.В старой системе соединение с базой данных было открыто следующим образом:

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='path to mdb file';"

Вместо того, чтобы уговорить старый драйвер Jet на новую систему, я надеялся просто обновить строку подключения до:

"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=path to file;"

Эта новая строка подключения разрывает любые запросы, в которых строковые значения заключены в двойные кавычки.Например, этот запрос работает со старым драйвером Microsoft.Jet.OLEDB.4.0, но ошибки с новым:

conn.Execute("UPDATE table SET field1=1 WHERE field2=""test"";")

Замена двойных кавычек одинарными кавычками исправляет отдельные запросы, т. Е. Работает с обоимидрайверов, но это будет большая работа по рефакторингу и может привести к ошибкам в доверенном коде:

conn.Execute("UPDATE table SET field1=1 WHERE field2='test';")

Я ищу способ использовать драйвер Microsoft Access (* .mdb) для использования существующих запросов (которые имеютстроки, заключенные в двойные кавычки) без рефакторинга.Заранее спасибо.

...