| imho.ws |
![]() |
|
|
|||||||
|
Сообщения:
Перейти к новому /
Последнее
|
Опции темы |
|
|
# 1 |
|
Member
Регистрация: 12.07.2004
Адрес: Очень странное место.
Сообщения: 328
![]() ![]() |
Помогите найти фунцию. (приступ идиотизма) (VBA, Access)
Доброго времени суток.
Не могу отыскать подходящую ф-ю в MSDN и хелпах. Ф-я должна обрабатывать строку с SQL запросом и заменять "небезопасные символы" (например "'" на"\'") и т.д. Можно конечно и самому написать, но в данном случае это не лутшее решение. Такая функция есть 99%. Поможете найти ? |
|
|
|
|
# 3 |
|
Junior Member
Регистрация: 16.10.2002
Адрес: Россия-матушка
Пол: Male
Сообщения: 96
![]() ![]() |
Raven B.
Ты хочешь предотвратить sql-инъекцию? Стандартных функций для этого не припомню. Вообще имхо надо не sql запрос обрабатывать, а те строки, из которых он составляется. "Опасными" будут знаки кавычек, которые используются в запросе для обозначения строковых литералов (в Access я использую исключительно ", хотя допускается и '); и достаточно заменить одну кавычку на две в той строке, которая используется в запросе. Например: Код:
s = "SELECT * FROM T WHERE T.str_f LIKE """ & 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) & """"
__________________
1 миллибайт = 1/1024 байта |
|
|
|
|
# 4 |
|
Member
Регистрация: 12.07.2004
Адрес: Очень странное место.
Сообщения: 328
![]() ![]() |
Спасибо огромное за функцию.
Что ж если нет стандартной функции то нет... ничего не подеалешь =( Вообще проблема была не в безопасности. БД локальная. Проблема была в том что запросы у меня выглядят как: Код:
DoCmd.RunSQL ("INSERT INTO pest_type_n_t ( pest_type_n ) VALUES ('" & proff_in.Value & "');")
Спасибо еще раз. Буду копатся. |
|
|