Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2015, 20:47   #1
marwell.
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 63
Вопрос обработка ошибки

добрый день!
использую sqlite3.pas для работы с бд sqlite.
Возник вопрос, как корректно обрабатывать случаи, когда в таблице не содержится требуемых данных? Пример:
Код:
Var sldb: TSQLiteDatabase;
s := sldb.GetTableString('select pass from users where login = "'+login.Text + '"');
if s=md5(pass.Text) then showmessage('Autorization ok!')
else showmessage('Autorization fail!');
Если в базе нет логина test1, то при попытке выполнения запроса получаю ошибку "table is at end of file". Как такую ошибку обработать? Не выполнять же в начале запрос на подсчет количества записей с таким логином, и если > 0 то выполнить запрос ...
marwell. вне форума Ответить с цитированием
Старый 29.04.2015, 21:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А если так:
Код:
s:integer;
...
s := sldb.GetTableValue('select count(users) from users where login = "'+login.Text + '" and pass="'+md5(pass.Text)+'"');
if s=1 then showmessage('Autorization ok!')
else showmessage('Autorization fail!');
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2015, 21:53   #3
marwell.
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 63
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А если так:
Код:
s:integer;
...
s := sldb.GetTableValue('select count(users) from users where login = "'+login.Text + '" and pass="'+md5(pass.Text)+'"');
if s=1 then showmessage('Autorization ok!')
else showmessage('Autorization fail!');
спасибо! так сработает.
Но у меня есть и другие запросы, например вытаскивающие список всех пользователей по какому-либо признаку. Чтобы в каждом подобном запросе сначала не проверять количество записей в таблице, я и подумал что может есть способ именно обработки такой ошибки ...
marwell. вне форума Ответить с цитированием
Старый 29.04.2015, 22:47   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А просто GetTable что возвращает? По идее датасет должен, и в нем не должно быть проблемы с нулевым количеством записей. Могу и ошибаться, не знаком с этим компонентом
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.04.2015, 22:58   #5
marwell.
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 63
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А просто GetTable что возвращает? По идее датасет должен, и в нем не должно быть проблемы с нулевым количеством записей. Могу и ошибаться, не знаком с этим компонентом
да, действительно, GetTable возвращает датасет, и с ним проблем нет. Спасибо, буду использовать GetTable вместо одиночного вытаскивания значения с GetTableString
P.S хотя обрабатывать ошибку при GetTableString наверное было бы лучше ...
marwell. вне форума Ответить с цитированием
Старый 30.04.2015, 06:53   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
обрабатывать ошибку при GetTableString наверное было бы лучше
Ты лучше бы сделал хранимые процедуры для таких скалярных результатов. И к ним бы обращался. Тогда конечно GetTableString себя оправдает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка ошибки vlkr Microsoft Office Access 1 17.08.2012 21:51
Обработка ошибки vlkr Microsoft Office Access 2 11.07.2012 15:45
Обработка ошибки ольгаг Microsoft Office Excel 9 15.06.2012 15:07
Обработка ошибки N/A cerberochek Microsoft Office Excel 2 02.09.2010 18:11
Обработка ошибки iggor C++ Builder 6 13.06.2010 20:49