Delphi & Oracle
На моей раб. станции установлена прикл. программа, использующая Oracle. ПК взходит в домен. Для возможности нестандартных выборок (не предусмотренных прикл. прогой) мне установили SQL Developer и дали полномочия (login/passw) на чтения некоторых таблиц. Ч/з SQL Developer мои запросы идут. Хочу сделать exe (Delphi7, XP SP3). К dbf я цеплялся из D7 и запросы шли, а вот как быть в случае с Oracle...
Воткнул на форму Query1 из BDE и код:
Query1.DatabaseName := 'Oracle1' ;
Query1.SQL.Text := '';
Query1.SQL.Text := 'select * from class order by cd_1';
Query1.Active := True;
Выходит ошибка:
Project Project 1 .exe raised exception class EDBEngineError with message 'General SQL error.
ORA-01012: Вы не не вошли в систему
Alias: Oracle Г. Process stopped. Use Step or Run to continue.
Как мне быть? С чего начать
Походу пароль и логин предъявить нужно.
На моей раб. станции установлена прикл. программа, использующая Oracle. ПК взходит в домен. Для возможности нестандартных выборок (не предусмотренных прикл. прогой) мне установили SQL Developer и дали полномочия (login/passw) на чтения некоторых таблиц. Ч/з SQL Developer мои запросы идут. Хочу сделать exe (Delphi7, XP SP3). К dbf я цеплялся из D7 и запросы шли, а вот как быть в случае с Oracle...
Воткнул на форму Query1 из BDE и код:
Query1.Active := False;
Query1.DatabaseName := 'Oracle1' ;
Query1.SQL.Text := '';
Query1.SQL.Text := 'select * from class order by cd_1';
Query1.Active := True;
Выходит ошибка:
Project Project 1 .exe raised exception class EDBEngineError with message 'General SQL error.
ORA-01012: Вы не не вошли в систему
Alias: Oracle Г. Process stopped. Use Step or Run to continue.
Как мне быть? С чего начать
Пихнуть на форму компонент TDatabase, в дизайнере компонент TDatabase сделать Driver Name = ORACLE, задать какой-нибудь Database Name, создать параметры кнопкой Defaults, в параметрах правильно задать свои Server Name, User Name и Password. Можно отключить галку "Login Prompt" (тогда не будет спрашивать логин-пароль). Желательно включить галку "Keep Inactive Conection". Потом сделать Query1->DatabaseName = имя_нашей_БД (то, которое задано в Database1->DatabaseName); Database1->Connected = true;, а потом весь остальной код.
Только, IMHO, для работы с Oracle лучше использовать ODAC, т.к. потом меньше писанины.
UPDATED: ЗЫ. Сори за стрелочки и отсутствие двоеточий в операторах присвоения -- привык к C++Builder и не разумею в дельфовом синтаксисе.
UPDATED: ЗЗЫ. Предыдущий оратор прав. Вот что говорит дока:
ORA-01012 not logged on
Cause: A host language program issued an Oracle call, other than OLON or
OLOGON, without being logged on to Oracle. This can occur when a user
process attempts to access the database after the instance it is connected to
terminates, forcing the process to disconnect.
Action: Log on to Oracle, by calling OLON or OLOGON, before issuing any
Oracle calls. When the instance has been restarted, retry the action.