Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

dbExpress

18K
03 декабря 2008 года
s-ilent
58 / / 30.09.2008
Извиняюсь, что так часто, но пишу диплом и встречаются загвоздки.
У меня приложение соединяется с базой на сервере через dbExpress.

среда разработки C++ Builder 2009, сервер MSSQL 2008.

Существует форма регистрации. На ней вводится имя пользователя и пароль. Для входа необходима проверка подлинности пароля. Для этого из таблицы Пользователь надо взять данные, соответсвующие введенному имени пользователя и записать их в переменные.

Вот фрагмент моей программы:

_uData.userNickname - введенное имя пользователя

try {

this->SQLQuery->Close();
this->SQLQuery->SQL->Clear();
this->SQLQuery->Params->Items[0]->AsString = _uData.userNickname;
this->SQLQuery->SQL->Add("select * from usersRules where nickUser = :Nickname");
this->SQLQuery->Open();

} catch(...) {

}

и потом забираю данные
_uData.userName = this->SQLDataSet->FieldByName("nameUser")->AsString;

Проблема в том, что на строке
this->SQLQuery->Params->Items[0]->AsString = _uData.userNickname;

вылетает ошибка
Project MyProject.exe raised exception class EListError "List index out of bounds (0)".

Подскажите, как исправить??
11
03 декабря 2008 года
oxotnik333
2.9K / / 03.08.2007
сначала в Query помещается текст запроса, затем он парситься (автоматически) на предмет наличия параметров а затем только можно работать с параметрами.
Вывод: поменять местами строчки:
this->SQLQuery->Params->Items[0]->AsString = _uData.userNickname;
this->SQLQuery->SQL->Add("select * from usersRules where nickUser = :Nickname");
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог