![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте!
Делаю программку с применением SQLite. Нужно, чтобы путь к открываемому файлу заносился в БД. Вдобавок производится проверка, если такой путь уже есть в базе, то файл в БД не должен заноситься. Когда файл открывается из какой-то папки на рабочем столе (например, C:\Documents and Settings\Пользователь\Рабочий стол\Images или D:\Folder1) и его нет в базе (sltb.FieldAsInteger(0)=0), то занесение в базу происходит. Но когда файл сам находится на рабочем столе (C:\Documents and Settings\Пользователь\Рабочий стол), путь к файлу в базу почему-то не заносится. В чем может быть тут дело? Код:
var MAIN_DB:TSQLiteDatabase;
.............
var sltb:TSQLiteTable;
.............
try
sltb := MAIN_DB.GetTable('SELECT COUNT (full_path) FROM file_location WHERE full_path like "'+ExtractFilePath(ExpandFileName(NamFile))+'%"');
if sltb.FieldAsInteger(0)=0 then
MAIN_DB.ExecSQL('INSERT INTO file_location (full_path) values("'+ExtractFilePath(ExpandFileName(NamFile))+'")');
finally
sltb.Free;
end; |
|
#2
|
|||
|
|||
|
SQLite не правильно рабоает с русскими буквами. Сам на это наступал и как раз с операцией LIKE. Либо переделывай на точное соответсвие (на равно), либо меняй БД. Я в итоге поменял БД на fireBird embeddeed с использованием IBX.
|
|
#3
|
|||
|
|||
|
Заменил на точное соответствие. Программа стала заносить в БД и Рабочий стол, и подпапки. Действительно, там не надо было использовать LIKE. Спасибо!
|
|
#4
|
|||
|
|||
|
SQLite прекрасно работает с русскими буквами, единственное что нужно делать это перекодировать в UTF-8. Для этого пользуйся
UTF8Encode и UTF8Decode |