C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Программное создание БД., Как создать БД используя компонент Query
maikl
Отправлено: 19.12.2003, 08:32


Станционный диспетчер

Группа: Участник
Сообщений: 135



Подскажите мне как можно создать с помощью компонента Query БД, я в свойстве SQL пишу :

CREATE TABLE Cool {
Fam char(10) NOT NULL PRIMARY KEY
}

но у меня выдаетсся ошибка, скажите может так нельзя делать, и как можно это сделать. Я хочу в начале создать БД с помощью такого запроса. У меня есть кнопка на при нажатии на которую я хочу ее потом удалить, и снова создать.

Только не спрашивайте зачем мне ее заново создавать, я просто учусь.
pasha
Отправлено: 19.12.2003, 12:37


Дежурный стрелочник

Группа: Участник
Сообщений: 62



QUOTE
Я хочу в начале создать БД


А какую базу данных ?
Если InterBase, то

SQL
CREATE DATABASE 'c:\GOODS.GDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251;


Создать таблицу в базе данных

SQL
CREATE TABLE Cool (
Family char(10)
)

(круглые скобки а не фигурные)

Fred
Отправлено: 19.12.2003, 13:16


Ученик-кочегар

Группа: Участник
Сообщений: 19



Передо мной стоит аналогичная проблема. Но то что при помощи компонента TQuery создать БД невозможно, я уже понял :)
maikl
Отправлено: 19.12.2003, 13:24


Станционный диспетчер

Группа: Участник
Сообщений: 135



Нет это не InterBase, я работаю с СУБД Paradox, на форме у меня есть компонент SQL, в свойстве SQL этого компонента я хочу записать запрос который бы создавал мне базу данных, затем мне необходимо описать поля в ней, задать тип и т.д, хотелось бы узнать как можно это сделать, в справке я так ничего и неразобрал .
maikl
Отправлено: 19.12.2003, 13:32


Станционный диспетчер

Группа: Участник
Сообщений: 135



QUOTE (Fred @ 19/12/2003, 22:18)
Передо мной стоит аналогичная проблема. Но то что при помощи компонента TQuery создать БД невозможно, я уже понял smile.gif

Как это невозможно ??? Должно быть , ну все же если разберусь скажу тебе, зачем создавать БД в InterBase или в любой другой СУБД, если я дальше в своей программе использовать ее не буду. Ну если все же не узнаю, тогда в InterBase буду делать. biggrin.gif
butch
Отправлено: 20.12.2003, 03:42


Не зарегистрирован







Извените Майкл, я не понял, вы хотите создать базу или таблицу в уже существующей?
maikl
Отправлено: 20.12.2003, 05:44


Станционный диспетчер

Группа: Участник
Сообщений: 135



Я хочу создать базу, а затем в нее уже таблицу.
Fred
Отправлено: 20.12.2003, 06:32


Ученик-кочегар

Группа: Участник
Сообщений: 19



Не ходи по тем граблям на которые другие уже наступали smile.gif
При помощи TQuery ты не сможешь программно создать базу!

Я кажется нашел такую возможность:
CODE

#include <gds.h>
#pragma link "gds32.lib"

int __fastcall CreateDatabase(void)
{
  ISC_STATUS status_vector[20];
  isc_db_handle db_handle = 0;
  isc_tr_handle dm_handle = 0;

  char * statement = "CREATE DATABASE 'C:\\Test.gdb' USER 'SYSDBA' PASSWORD 'masterkey';";

  isc_dsql_execute_immediate(status_vector,&db_handle,&dm_handle,0,statement,1,0);

  return status_vector[1];
}


У меня отлично отрабатывает. Удачи smile.gif
maikl
Отправлено: 20.12.2003, 07:52


Станционный диспетчер

Группа: Участник
Сообщений: 135



Спасибо, за совет, но ты не мог бы пояснить что то в своем коде, я так понял ты тут используешь FireBrid, с помощью него и создаешь БД, проблема в том что я не совсем научился использовать его, мог бы ты пояснить что нужно кидать на форму для того что бы использовать его, потом что нужно для того что бы в DBGrid отобразить результаты, после того как я создам таблицу для этой базы. Не совсем я понимаю как это все использовать потом в своем приложении.
Fred
Отправлено: 20.12.2003, 08:48


Ученик-кочегар

Группа: Участник
Сообщений: 19



Я действительно, использую FireBird. Но этот пример должен работать и с Interbase. Функция только создает новую БД. Ничего для этого на форму кидать не нужно. Процедура isc_dsql_execute_immediate(...) находится в библиотеке gds32.lib, в каталоге где установлен Interbase/Firebird. Путь к этому каталогу нужно прописать в опциях проекта. Где-то там же находится и файл gds.h.
#pragma link "gds32.lib" добавляет библиотеку к проекту.
У меня были какие-то мелкие проблемы при компиляции, но они довольно быстро решаются.

maikl
Отправлено: 20.12.2003, 08:57


Станционный диспетчер

Группа: Участник
Сообщений: 135



Ладно спасибо, буду с InterBase работать, там както более понятнее мне, а то что ты FireBird использовал я по этим библиотекам и понял, потому что они только там и используются .
Fred
Отправлено: 20.12.2003, 08:59


Ученик-кочегар

Группа: Участник
Сообщений: 19



В Interbase эта библиотека тоже есть smile.gif
pasha
Отправлено: 20.12.2003, 15:49


Дежурный стрелочник

Группа: Участник
Сообщений: 62



А я не понимаю, какие вообще проблемы могут быть с Paradox ???
База данных Paradox — это папка, в которой лежат
файлы таблиц (*.db), индексы и т.д.

Создаете папку (напмример с помощью ForceDirectories() ),
указываете ее Database1->DatabaseName = ...
потом создаете в этой папке нужные Вам таблицы,
вот и все !!!

База Paradox с таблицами готова — в чем сложность ???
butch
Отправлено: 20.12.2003, 20:32


Не зарегистрирован







biggrin.gif
http://borland.xportal.ru/forum/viewtopic.php?t=8306
Fred
Отправлено: 21.12.2003, 02:03


Ученик-кочегар

Группа: Участник
Сообщений: 19



Butch, А чего ты только одну ссылку указал ? Я на нескольких конференциях этот вопрос обсуждал чуть раньше Maikla. И на этой тоже. Здесь smile.gif


Отредактировано Fred — 21/12/2003, 03:10
butch
Отправлено: 21.12.2003, 14:11


Не зарегистрирован







уговорил biggrin.gif

Вернуться в Работа с базами данных в C++Builder