Подскажите: что лучще?
Подскажите: что лучще?
Нужно сделать небольшую клиент-серверную БД. Решил связаться с FireBird. Клиентские проги пишутся на C++ Builder. Вроде бы всё понятно и легко. Что, однако, вызывает подозрение.
Так вот хотелось бы узнать какие подводные камни могут меня ожидать? Я имею ввиду фирменные глюки и узкие места. Что лучще всё таки использовать: InterBase или FireBird? И каких версий?
И ещё такой вопрос: где бы по-подробнее почитать про компоненты для работы с IB? Ато сколько по инету не шарился, что-то ничего толкового не нашёл.
Так вот хотелось бы узнать какие подводные камни могут меня ожидать? Я имею ввиду фирменные глюки и узкие места. Что лучще всё таки использовать: InterBase или FireBird? И каких версий?
И ещё такой вопрос: где бы по-подробнее почитать про компоненты для работы с IB? Ато сколько по инету не шарился, что-то ничего толкового не нашёл.
Спасибо. Всё более-менее понятно. Только вот с компонентом IBSQL не всё ясно. Примеры его использования где-нить можно найти?
И ещё такой вопрос. Прочитав статью "Этот загадочный TIBStoredProc" и узнав о глюках данного компонента, сильно перепугался и убрал все IBStoredProc. Я прав в своих страхах? Теперь пытаюсь использовать хранимые процедуры через другие компоненты, но ничего не получается. Не расскажите как их заюзать, например, через IBQuery?
И ещё такой вопрос. Прочитав статью "Этот загадочный TIBStoredProc" и узнав о глюках данного компонента, сильно перепугался и убрал все IBStoredProc. Я прав в своих страхах? Теперь пытаюсь использовать хранимые процедуры через другие компоненты, но ничего не получается. Не расскажите как их заюзать, например, через IBQuery?
www.ibase.ru/devinfo/ibx.htmТолько вот с компонентом IBSQL не всё ясно. Примеры его использования где-нить можно найти?
собственно, какие там примеры? берешь и используешь.
в отношении ibx - да.Я прав в своих страхах?
??? мсье не в курсе execute procedure или select * from proc? Что значит "не получается"?Теперь пытаюсь использовать хранимые процедуры через другие компоненты, но ничего не получается. Не расскажите как их заюзать, например, через IBQuery?
собственно, какие там примеры? берешь и используешь.
Значит щас глупость спрошу: откуда вычитанные данные брать? Т.е., например, в IBStoredProc входные/выходные данные сидят в параметрах. А тут-то как/что? Не понимаю основ...
Спрошу глупость №2: чем ещё кроме IBX хорошо пользоваться?в отношении ibx - да.
В курсе. Так и делаю. Однако выдаётся сообщение: "XSQLDA index out of range". Видимо где-то что-то не то выставляю... :-/ Нельзя ли разжевать для меня тупоголового???? мсье не в курсе execute procedure или select * from proc? Что значит "не получается"?
Извиняюсь за мою тупизну и темноту. Надеюсь на Вашу помощь.
ты пример кода приведи, чего делаешь. А то это сообщение об ошибке слишком универсальное.
Если у тебя процедура возвращает параметры, и ты ее выполняешь по execute procedure, то надо добавлять returning_values (см. синтаксис exec ute procedure). Возвращаемые данные - в Current. И т.п.
Вместо IBX можно пользоваться FIBPlus. в той статье он упоминается. Он платный, более качественный и функциональный, но, собственно, не стоит думать, что перескочив на него тебе сразу будет полное "щастье".
Если у тебя процедура возвращает параметры, и ты ее выполняешь по execute procedure, то надо добавлять returning_values (см. синтаксис exec ute procedure). Возвращаемые данные - в Current. И т.п.
Вместо IBX можно пользоваться FIBPlus. в той статье он упоминается. Он платный, более качественный и функциональный, но, собственно, не стоит думать, что перескочив на него тебе сразу будет полное "щастье".
Рассказываю с самого начала:ты пример кода приведи, чего делаешь
В IBExpert создал БД с такой таблицей:
Код: Выделить всё
NUMBER FAMILY NAME DOLZHNOST
1234 Чуйко Николай Начальник бюро
3421 Болдин Геннадий инженер-программист
3486 Андреева Надежда инженер
Код: Выделить всё
CREATE PROCEDURE VIEW_DOLZHN (
PFAM CHAR(20))
RETURNS (
PDOLZHN CHAR(50))
AS
begin
select dolzhnost from new_table
where family=:pfam
into pdolzhn;
end
EXECUTE PROCEDURE view_dolzhn(:pfam) returning_values :pdolzhn
В свойстве Params указываю для pfam и pdolzhn тип String и входное/выходное соостветственно.
При попытке сделать Execute SQL пишется:
Dinamic SQL error
SQL error code = -104
Token unknown - line 1, char 34
returning_value.
Т.е. не опознаётся returning_value... Странно... Что бы это значило?
Нельзя ли показать всю цепочку доставания данных из IBSQL?Возвращаемые данные - в Current.
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
полная фигня.
во-первых, твоя процедура НЕ РАБОТАЕТ, и вообще смысл запроса внутри нее неясен.
Ты ее хоть запускать пробовал, из ibexpert например?
Дальше. С IBSQL и IBQuery все проще простого. Допустим, IBSQL (Q)
или, если процедура может возвращать много записей (селективная процедура, то все обычным способом, как с запросом:
и где тут что непонятно?
Ты в каких дельфях работаешь? После имени объекта жмешь точку, и смотришь список его свойств и методов. Или жмешь на компоненте F1, и смотришь справку по нему.
во-первых, твоя процедура НЕ РАБОТАЕТ, и вообще смысл запроса внутри нее неясен.
Ты ее хоть запускать пробовал, из ibexpert например?
Дальше. С IBSQL и IBQuery все проще простого. Допустим, IBSQL (Q)
Код: Выделить всё
Q.SQL.Add('execute procedure get_emp_proj (:a)');
Q.ParamByName('a').AsInteger:=8;
Q.ExecQuery;
b:=Q.Current[0].AsString;
// или Q.Current.ByName('PROJ_ID').asString;
Q.Close;
Код: Выделить всё
Q.SQL.Add('select * from get_emp_proj (:a)');
Q.ParamByName('a').AsInteger:=8;
Q.ExecQuery;
while not Q.Eof do
begin
b:=Q.Current.ByName('proj_id').AsString;
Q.Next;
end;
Q.Close;
Ты в каких дельфях работаешь? После имени объекта жмешь точку, и смотришь список его свойств и методов. Или жмешь на компоненте F1, и смотришь справку по нему.
Я уже осознал, что эта процедура написана не правильно. Однако она работает через IBStoredProc. Почему-то.
Работаю я не в Дельфях, а в 5-м Билдере. Там получилось несколько по-другому. Ну да не суть важно. Вроде разобрался. Спасибо за помощь.
Это конечно же пример БД, который я набрал от балды. Сейчас изучаю Грубера(Грабера). Стоит ли закупать книжку Х. Борри по FireBird?
Работаю я не в Дельфях, а в 5-м Билдере. Там получилось несколько по-другому. Ну да не суть важно. Вроде разобрался. Спасибо за помощь.
Это конечно же пример БД, который я набрал от балды. Сейчас изучаю Грубера(Грабера). Стоит ли закупать книжку Х. Борри по FireBird?
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
"работаю с IB с 1998 года" может означать как все так и ничего. Если ты прикладник, то у вас с этим обычно бывает так, что чуть прыгни в сторону, и по знаниям полный провал. Я не имею в виду никого персонально, но насмотрелся всякого.
Эта книга - фактически та самая "отсутствующая документация" по Firebird. Мне она досталась от издателя, потом, я ее редактил, так что мое мнение по поводу покупки экземпляра весьма субъективно
Эта книга - фактически та самая "отсутствующая документация" по Firebird. Мне она досталась от издателя, потом, я ее редактил, так что мое мнение по поводу покупки экземпляра весьма субъективно
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
сходи на www.sql.ru например