Я бы создал функцию, которая инкапсулирует весь или большую часть доступа к данным. В предыдущих проектах я создал функцию GetRecordset
, которая принимает оператор SQL и возвращает экземпляр набора записей. В функции я открываю базу данных, выполняю запрос, закрываю базу данных и возвращаю набор записей. Это обеспечивает закрытие соединений.
Я хотел бы создать функцию для очистки параметров в операторе SQL или, что еще лучше, использовать параметризованные запросы. В коде, где я не хотел переписывать запросы и, таким образом, использовал конкатенацию, для функции, которую я использовал, требовался параметр vbVarType
, чтобы я мог проверить, что переданное значение соответствует указанному типу, и чтобы даты помещались в формат, который не является специфическим для культуры сервера.
Я бы искал экземпляры одинарной кавычки с последующей двойной кавычкой. Здесь вы ищете Select ... Where StringOrDateCol = '" & Request.QueryString("GodKnowsWhat") & ...
Даже со всем этим вы не поймаете все. Например, вы не поймали бы Select ...Where NumericCol = " & Request.QueryString("GodKnowsWhat")
. Окончательный поиск может заключаться в поиске по Select
, Update
, Insert
и Delete
и проверке каждого оператора SQL, чтобы убедиться, что он использует функцию, созданную в # 2 выше.