Я использую встроенное дерби Apache для своего приложения. У меня есть SQL скрипт createdb.sql, который создает все таблицы в базе данных и заполнит его с исходными данными, например:Выполнять инструкции db из файла
SET SCHEMA APP;
CREATE TABLE study (
study_id bigint not null GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
name varchar(50) not null,
note varchar(1000) DEFAULT '',
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted boolean DEFAULT false,
UNIQUE(name),
CONSTRAINT primary_key PRIMARY KEY (study_id)
);
INSERT INTO "APP"."STUDY" (NAME) VALUES ('default');
CREATE TABLE img (
img_id bigint not null GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
filename varchar(200) not null,
path varchar(300) not null,
flipped boolean DEFAULT false,
type smallint not null,
note varchar(1000) DEFAULT '',
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (img_id)
);
ALTER TABLE img ADD COLUMN dpix integer DEFAULT -1;
ALTER TABLE img ADD COLUMN dpiy integer DEFAULT -1;
Вопрос заключается в том, как я могу загрузить этот файл и выполнить все операторы, использующие Java ? Я пытаюсь выполнить другую функцию, но все они не работают. Например,
Statement s = conn.createStatement();
s.execute(sqlStr);
или
Statement s = conn.createStatement();
s.executeUpdate(sqlStr);
где sqlStr является переменной Строка, содержащая содержимое createdb.sql файла. Как выполнить все команды SQL, содержащиеся в скрипте, чтобы я мог создавать все таблицы и инициализировать их? Кстати, скрипт SQL работает, поскольку я использую его в SQuirreL SQL Client для ручного создания и инициализации базы данных. Теперь я хотел бы сделать это из моего приложения.
k, thx. Это дало мне идею разделить строку sqlStr на несколько строк на основе «;» а затем запустите команду execute в цикле for для каждой команды. – Marcin
Почему вы идете на цикл? Просто дайте sql-файлу scriptrunner. – Dhinakar
Я не хочу использовать внешние библиотеки или скрипты. Это единственная причина. – Marcin