Показать сообщение отдельно
Старый 23.11.2005, 09:32     # 3
LightImage
Junior Member
 
Регистрация: 16.10.2002
Адрес: Россия-матушка
Пол: Male
Сообщения: 96

LightImage Нимб уже пробиваетсяLightImage Нимб уже пробивается
Raven B.
Ты хочешь предотвратить sql-инъекцию? Стандартных функций для этого не припомню. Вообще имхо надо не sql запрос обрабатывать, а те строки, из которых он составляется. "Опасными" будут знаки кавычек, которые используются в запросе для обозначения строковых литералов (в Access я использую исключительно ", хотя допускается и '); и достаточно заменить одну кавычку на две в той строке, которая используется в запросе. Например:
Код:
 s = "SELECT * FROM T WHERE T.str_f LIKE """ & mystr & """"
Здесь в строке mystr надо "задвоить" кавычки. Для этого используем такую функцию:
Код:
Public Function DoubleQuotesInStr(ByVal str As String) As String
' Заменить каждый знак двойной кавычки ('"') в строке str на два таких знака ('""')
Dim i As Integer
    i = 1
    Do
        i = InStr(i, str, """", vbBinaryCompare)
        If i > 0 Then
            str = Mid(str, 1, i) & """" & Mid(str, i + 1)
            i = i + 2
        Else
            Exit Do
        End If
    Loop
    DoubleQuotesInStr = str
End Function
Код, создающий текст запрос, перепишется так:
Код:
 s = "SELECT * FROM T WHERE T.str_f LIKE """ & _
  DoubleQuotesInStr(mystr) & """"
Можешь также использовать запросы с параметрами, они, насколько помню, не подвержены sql-инъекции.
__________________
1 миллибайт = 1/1024 байта
LightImage вне форума