Компоненты ADO
Есть например код:
ADODataSet1->Close();
ADODataSet1->CommandText = String("select * from instance where id=") + String(instance);
ADODataSet1->Open();
if(ADODataSet1->IsEmpty()){
ShowMessage("...");
}
ADODataSet1->Close(); // Эта строка вызывает исключение почему-то, если ADODataSet1->IsEmpty() возвращает true. Сообщение: Either EOF or BOF is true, or the current record has been deleted, operation requires a current record.
Что нужно сделать?
Если запрос на изменение данных, то используется метод Execute (выполнить). Открывать/закрывать тут нечего.
Если запрос на выборку (SELECT), то используется комбинация Open и Close. Также для открытия запроса можно изменять свойство Active.
Ещё можно формировать текст SQL-запросов непосредственно в самой БД (например, в Access'е). В этом случае запросы вызываются по имени запроса. Запросы без параметров открываются через ADOTable, а запросы с параметрами вызываются через ADOStoredProc (вроде бы так должно писаться) аналогично ADOQuery.