SQLite, как создать БД с несколькими таблицами?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

SQLite, как создать БД с несколькими таблицами?

Сообщение xterro » 10.11.2014 13:33:39

Доброго времени суток, играюсь с SQLite в Lazarus, пытаюсь значит создать новую базу(проверяю, есть ли файл БД, если его нет, создаю новый). За основу брал следующий пример:

Код: Выделить всё
var
  newFile : Boolean;
begin

  SQLite3Connection1.Close; // Ensure the connection is closed when we start

  try
    // Since we're making this database for the first time,
    // check whether the file already exists
    newFile := not FileExists(SQLite3Connection1.DatabaseName);

    if newFile then
    begin
      // Create the database and the tables
      try
        SQLite3Connection1.Open;
        SQLTransaction1.Active := true;

        // Here we're setting up a table named "DATA" in the new database
        SQLite3Connection1.ExecuteDirect('CREATE TABLE "DATA"('+
                    ' "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT,'+
                    ' "Current_Time" DateTime NOT NULL,'+
                    ' "User_Name" Char(128) NOT NULL,'+
                    ' "Info" Char(128) NOT NULL);');

        // Creating an index based upon id in the DATA Table
        SQLite3Connection1.ExecuteDirect('CREATE UNIQUE INDEX "Data_id_idx" ON "DATA"( "id" );');

        SQLTransaction1.Commit;

        ShowMessage('Succesfully created database.');
      except
        ShowMessage('Unable to Create new Database');
      end;
    end;
  except
    ShowMessage('Unable to check if database file exists');
  end;
end;


Моё отличие состояло в том, что в функцию SQLite3Connection1.ExecuteDirect() я передавал запрос, в котором было несколько CREATE TABLE(); но по факту, после выполнения запроса,(при просмотре списка таблиц), в базе была только одна таблица(первая из списка CREATE TABLE). Правильно ли я понимаю, что для каждого CREATE TABLE нужно вызывать свой ExecuteDirect("CREATE TABLE(...)")? Если нет, то как правильно делать(киньте примером), ибо в примерах и туториалах этот момент почему-то опущен, везде создаётся БД в одну табличку либо примеры идут уже на созданной :(
xterro
постоялец
 
Сообщения: 148
Зарегистрирован: 23.02.2014 13:49:33

Re: SQLite, как создать БД с несколькими таблицами?

Сообщение Vadim » 11.11.2014 06:11:48

Для ExecuteDirect() действительно надо давать каждую команду по отдельности.
Однако если Вы хотите выполнить скрипт с множеством команд целиком, то на той же вкладке есть компонент TSQLScript. Привяжите его к Вашему SQLite3Connection1 и с помощью него можно выполнять любые многокомандные скрипты.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: SQLite, как создать БД с несколькими таблицами?

Сообщение xterro » 11.11.2014 08:14:14

Vadim
Теперь понятно, спасибо :)
xterro
постоялец
 
Сообщения: 148
Зарегистрирован: 23.02.2014 13:49:33


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 234

Рейтинг@Mail.ru
cron