我在我的应用程序中使用嵌入式 Apache derby。我有一个名为的 SQL 脚本创建的数据库.sql创建数据库中的所有表并用初始数据填充它,例如:
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);
or
Statement s = conn.createStatement();
s.executeUpdate(sqlStr);
where sqlStr是一个字符串变量,包含的内容创建的数据库.sql文件。如何执行脚本中包含的所有 SQL 命令,以便创建所有表并初始化它们?顺便说一句,SQL 脚本可以工作,因为我在 SQuirreL SQL 客户端中使用它来手动创建和初始化数据库。现在我想在我的应用程序中执行此操作。