Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi и базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 126, средняя оценка - 4.93
Sp
5 / 5 / 2
Регистрация: 02.11.2009
Сообщений: 236
Записей в блоге: 1
#1

Подключение к InterBase из Delphi - Delphi БД

25.01.2010, 02:15. Просмотров 17277. Ответов 11
Метки нет (Все метки)

Здравствуйте!!!!!!!!!
Люди добрые
Кто даст подробную инструкцию к подключению к InterBase из Delphi
Требуется.
1) Подключится к этому InterBase
2) Создать БД кодом из формы.
3) Подключится к БД в InterBase

Напрямую в IBConsole получается создать БД
но подключится из Delphi не как!!!!!!!!!!!!!!!!

У меня уже ум за разум заходит от этой литературы!!!!!!!!!!!!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2010, 02:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Подключение к InterBase из Delphi (Delphi БД):

Подключение InterBase
Доброго времени суток! Прошу вашей помощи по созданию БД. Пытаюсь создать...

InterBase+Delphi
Господа профи, всех приветствую, подскажите плизз ссылки или литературу, ну или...

Delphi + InterBase
Здравствуйте. Делаю небольшой клиент для БД на Delphi 7 lite. Бд сделана на...

Delphi и InterBase
Delphi и IB. В программе должно присутствовать разграничение пользователей по...

Delphi+InterBase
Здравствуйте, у меня пару вопросов касательно БД INTB+Delphi. 1) у меня есть...

delphi и interbase
как программно удалить все данные из таблицы в интербейсе?

11
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,803
Завершенные тесты: 1
25.01.2010, 11:14 #2
гляньте тут - http://www.cyberforum.ru/cpp-builder-database/thread88531.html (про создание БД в интербейсе)
1
AZDesign
1 / 1 / 0
Регистрация: 15.01.2010
Сообщений: 11
26.01.2010, 09:16 #3
1) Создание БД из клиентского приложения - дурной тон
2) Как создать БД, приложение и подключение подробно описано здесь:
AZMicro - самая простая бухгалтерская программа
1
Eugeny
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 5
28.01.2010, 08:09 #4
SP В делфе исть компоненты для работы с БД Это InterBase.
Добавляеш на форму IBDataBase, IBTable, IBTransaction из компонентов DataAccess DataSource.
Также необходимо Вставить DBGrid из Data Controls сюда будет загружаться твоя БД. Теперь тебе просто необходимо связать все эти компоненты:
В свойствах компонентах указываеш
Для IBDataBase Выбираеш свою БД в DataBase Name и в Default Transaction Указываешь IBTransaction1;

Для IBTable в св-ве DataBase выбери IBDataBase1 также укажи Transaction и выбери в TableName имя таблицы из БД и чтобы твоя таблица отображалась в св-ве Active: True;

Для IBTransaction Укажи DefaultDataBase: IBDataBase1

для DataSourese у Data Set выбери IBTable1

и последнее В DbGrid укажи в DataSource: DataSource1
Теперь можеш запускать!!
1
kukuruku310
197 / 184 / 26
Регистрация: 14.02.2010
Сообщений: 539
14.02.2010, 20:15 #5
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
IBDB := TIBDataBase.Create(Application);
  IBTr := TIBTransaction.Create(Application);
  with IBDB do begin
    DatabaseName := 'remoteserver:d:\base_storage\base_catalog\base_name.gdb';
    Params.Add('user_name=sysdba');
    Params.Add('password=my_password');
    Params.Add('lc_ctype=WIN1251');
    LoginPrompt := False;
    DefaultTransaction := IBTr;
  end;
 
  with IBTr do begin
    DefaultDatabase := IBDB;
    with Params do begin
      Add('isc_tpb_read');
      Add('isc_tpb_nowait');
      Add('isc_tpb_concurrency');
      Add('isc_tpb_read_committed');
      Add('isc_tpb_rec_version');
    end;
  end;
 
  try
    IBDB.Connected := True;
  except
    on E:EIBError do begin
      MessageBox(GetActiveWindow, PChar(E.Message), nil, 0);
    end;
  end;
чтобы создавать базу надо использовать прямые вызовы IB API, т.к. код в IBDataBase VCL для этой функции написан неправильно
1
Ex_Soft
107 / 107 / 15
Регистрация: 28.01.2009
Сообщений: 481
14.02.2010, 23:25 #6
Цитата Сообщение от kukuruku310 Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
    with Params do begin
      >>>Add('isc_tpb_read');<<<
      Add('isc_tpb_nowait');
      >>>Add('isc_tpb_concurrency');<<<
      Add('isc_tpb_read_committed');
      Add('isc_tpb_rec_version');
    end;
Хотелось бы услышать Ваши весомые аргументы для сего...
Цитата Сообщение от kukuruku310 Посмотреть сообщение
чтобы создавать базу надо использовать прямые вызовы IB API, т.к. код в IBDataBase VCL для этой функции написан неправильно
Бред...
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
гляньте тут - http://www.cyberforum.ru/cpp-builder-database/thread88531.html (про создание БД в интербейсе)
1
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,803
Завершенные тесты: 1
15.02.2010, 10:26 #7
Цитата Сообщение от Ex_Soft Посмотреть сообщение
Бред...
это вы хотите сказать, что бред писали в этой теме?
1
Ex_Soft
107 / 107 / 15
Регистрация: 28.01.2009
Сообщений: 481
15.02.2010, 11:05 #8
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
это вы хотите сказать, что бред писали в этой теме?
Я хотел сказать:
Цитата Сообщение от Ex_Soft Посмотреть сообщение
Цитата Сообщение от kukuruku310 Посмотреть сообщение
чтобы создавать базу надо использовать прямые вызовы IB API, т.к. код в IBDataBase VCL для этой функции написан неправильно
Бред...
1
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,803
Завершенные тесты: 1
15.02.2010, 11:10 #9
Ex_Soft, пардон, неправильно прочел ваш пост значит
1
kukuruku310
197 / 184 / 26
Регистрация: 14.02.2010
Сообщений: 539
15.02.2010, 19:07 #10
насчет параметров транзакции ничего не скажу, просто выдрал кусок из существующего кода, не заостряясь на деталях - просто как пример создания в программе, а не бросанием на форму.

насчет бреда - так бред именно в реализации CreateDatabase в стандартной VCL - при вызове Create Database не передается логин-пароль, вернее передается через Param, но не в том виде - с префиксом, который в данном случае совершенно вреден.
А вот если вызвать
IBDB.Call(isc_dsql_execute_immediate(StatusVector, @IBDB.Handle, @tr_handle, 0,
PChar('CREATE DATABASE ''localhost:c:\test.gdb'' user ''sysdba'' password ''пароль'''), 1, nil), True);
то база создана будет.
Ну а по поводу приведенной Вами ссылки по этому поводу, то что-то там конкретно по этому вопросу ничего не обнаружил.
А базу иногда(!очень!) нужно создать именно динамически - хотя бы как временную - задачи бывают разные....
1
Ex_Soft
107 / 107 / 15
Регистрация: 28.01.2009
Сообщений: 481
16.02.2010, 01:42 #11
Цитата Сообщение от kukuruku310 Посмотреть сообщение
насчет параметров транзакции ничего не скажу, просто выдрал кусок из существующего кода, не заостряясь на деталях - просто как пример создания в программе, а не бросанием на форму.
/me вспоминает: "...целый ряд вопросов отпал и осталось только несколько важнейших..."
Цитата Сообщение от kukuruku310 Посмотреть сообщение
насчет бреда - так бред именно в реализации CreateDatabase в стандартной VCL - при вызове Create Database не передается логин-пароль, вернее передается через Param, но не в том виде - с префиксом, который в данном случае совершенно вреден.
1. Т.е. именно это и сподвигло Вас к
Цитата Сообщение от kukuruku310 Посмотреть сообщение
код в IBDataBase VCL для этой функции написан неправильно
?
/me думает: ню-ню...

2. И в чем же, по Вашему мнению, "вредность" префикса?
Цитата Сообщение от kukuruku310 Посмотреть сообщение
А вот если вызвать
Т.е.
C++
1
2
3
4
5
cdb->Params->Add("user \"sysdba\"");
cdb->Params->Add("password \"masterkey\"");
cdb->Params->Add("default character set WIN1251");
cdb->Params->Add("page_size 4096");
cdb->CreateDatabase();
vs
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int __fastcall CreateDatabase(void)
{
   ISC_STATUS
     status_vector[20];
 
   char
     *statement="CREATE DATABASE 'd:\\INVENTORY.GDB' USER 'SYSDBA' PASSWORD 'masterkey'";
 
   TISC_DB_HANDLE
     db_handle=0;
 
   TISC_TR_HANDLE
     dummy_handle=0;
 
   _di_IGDSLibrary
     gdsInterface=GetGDSLibrary();
 
   gdsInterface->isc_dsql_execute_immediate(status_vector,&db_handle,&dummy_handle,0,statement,1,0);
 
   if(status_vector[0]==1 && status_vector[1])
     {
        return status_vector[1];
     }
 
   return 0;
}
Вы отдаете предпочтение винегрету? И чем это лучше?
0
kukuruku310
197 / 184 / 26
Регистрация: 14.02.2010
Сообщений: 539
16.02.2010, 10:17 #12
Блин, извините, и впрямь напутал насчет префиксов. Префиксы "isc_dpb" в даном конкретном случае действительно ни при чем. У меня просто как-то был глюк с добавлением параметров, вот не проверив и сделал умное лицо, ну да это не в тему...
А пример свой я просто нарисовал в качестве ответа на вопрос - "создание базы". Просто для примера как создать IB базу c использованием TIBDataBase, т.к. VCL-реализация CreateDatabase не передает обязательные в данном случае имя пользователя и пароль.
И ничего более показать своим примером не хотел.
0
16.02.2010, 10:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2010, 10:17
Привет! Вот еще темы с решениями:

Связка Delphi с Interbase
Объясните в чем проблема. Есть база данных на IB. В SQL Explrer'e она...

Delphi + InterBase + SQL
Товарищи помогите реализовать удаление выбранной записи из DBGrid при том что у...

Помагите с InterBase в Delphi
Здравствуйте. Помогите вот с чем: из всех записей кредитов, нужно посмотреть...

InterBase & Delphi 7.0
Всем доброго времени суток. Есть база Test.gdb в ней 6 полей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru