Коллеги, доброго времени суток!
Печаль-беда на меня напала. Не могу в скрипте наладить работу поиска в БД SQLite.
Сижу отлаживаю на примере, мозх оплавился.
Проблема.
AutoIT в связке <SQLite.au3>+ <SQLite.dll.au3> резко реагируют на регистр букв русского алфавита, считая, что "LIKE '%ы%'" и "LIKE '%Ы%'" совершенно два разных запроса.
Пример.
Стоит отметить, что с английским проблем нет..
Буду рад помощи.. :(
Пользую AutoIt v3.3.12.0
Печаль-беда на меня напала. Не могу в скрипте наладить работу поиска в БД SQLite.
Сижу отлаживаю на примере, мозх оплавился.
Проблема.
AutoIT в связке <SQLite.au3>+ <SQLite.dll.au3> резко реагируют на регистр букв русского алфавита, считая, что "LIKE '%ы%'" и "LIKE '%Ы%'" совершенно два разных запроса.
Пример.
Код:
#include <SQLite.au3>
#include <SQLite.dll.au3>
_SQLite_Startup()
If @error > 0 Then
MsgBox(16, "SQLite Ошибка", "SQLite.dll Не может быть загружен!")
Exit
EndIf
_SQLite_Open(Default,Default,$SQLITE_ENCODING_UTF8) ; варианты используемых кодировок (их всего три)
;~ _SQLite_Open(Default,Default,$SQLITE_ENCODING_UTF16)
;~ _SQLite_Open(Default,Default,$SQLITE_ENCODING_UTF16be)
_SQLite_Exec(-1, "CREATE TABLE tablo (id INTEGER PRIMARY KEY AUTOINCREMENT, Name varchar(256) );")
_SQLite_Exec(-1, "INSERT INTO tablo (Name) VALUES ('Андрей'), ('Борис'), ('Владимир'), ('Григорий'), ('Дмитрий'), ('Иван') ;")
$sOut = ""
$sQuery="SELECT Name FROM tablo WHERE Name LIKE '%и%';"
$sOut &= "! " & $sQuery & @CR
$sOut &= " ---->" & _SQLQuery($sQuery," ","; ") & "<----" & @CR
$sQuery="SELECT Name FROM tablo WHERE UPPER(Name) LIKE '%И%';"
$sOut &= "! " & $sQuery & @CR
$sOut &= " ---->" & _SQLQuery($sQuery," ","; ") & "<----" & @CR
;~ MsgBox(0,"",$sOut)
ConsoleWrite($sOut)
_SQLite_Close()
_SQLite_Shutdown()
Exit
Func _SQLQuery($sQuery, $sColDelemeter = @TAB, $sRowDelemeter = @CRLF)
Local $hQuery
Local $aRow
Local $sRes = ""
Local $i = 0
_SQLite_Query(-1, $sQuery, $hQuery)
While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
If $sRes <> "" Then $sRes &= $sRowDelemeter
For $i = 0 To UBound($aRow) - 1
If $i > 0 Then $sRes &= $sColDelemeter
$sRes &= $aRow[$i]
Next
WEnd
Return $sRes
EndFunc ;==>_SQLQuery
Результат работы примера
! SELECT Name FROM tablo WHERE Name LIKE '%и%';
---->Борис; Владимир; Григорий; Дмитрий<----
! SELECT Name FROM tablo WHERE UPPER(Name) LIKE '%И%';
---->Иван<----
Стоит отметить, что с английским проблем нет..
Буду рад помощи.. :(
Пользую AutoIt v3.3.12.0