Java 如何使用表和一些数据在内存中预填充Derby?

Java 如何使用表和一些数据在内存中预填充Derby?,java,jakarta-ee,jpa,derby,Java,Jakarta Ee,Jpa,Derby,我正在尝试使用Derby进行集成测试,我想知道如何用一些数据和表结构预先填充它?我无法找到它的文档,即使它确实存在于某个地方。我将它与JPA一起使用。与您一样,我找不到任何类型的API,但能够从各种示例中组合以下代码片段。我希望你觉得它有用 我与Derby交互的主要方式是通过字符串SQL查询,如下例所示: String create = "CREATE TABLE Pathways (" + "ID_NUMBER VARCHAR(10) NOT NULL," + "PATH VARCHAR(50

我正在尝试使用Derby进行集成测试,我想知道如何用一些数据和表结构预先填充它?我无法找到它的文档,即使它确实存在于某个地方。我将它与JPA一起使用。

与您一样,我找不到任何类型的API,但能够从各种示例中组合以下代码片段。我希望你觉得它有用

我与Derby交互的主要方式是通过字符串SQL查询,如下例所示:

String create = "CREATE TABLE Pathways (" +
"ID_NUMBER VARCHAR(10) NOT NULL," +
"PATH VARCHAR(50))";
Statement st = conn.createStatement();
st.executeUpdate(create);
st.close(); 
这将在数据库中创建表路径,并添加两列:ID\u NUMBER和PATH

DatabaseMetaData dmd = conn.getMetaData();
ResultSet columns = dmd.getColumns(null, null, "PATHWAYS", bob);
while(columns.next()){
System.out.println(columns.getString("COLUMN_NAME"));
}
String bob = NameOfColumnIWantToReturnOrNull
这将允许您查看刚刚创建的表中的所有列

Statement st = conn.createStatement();
st.executeUpdate("INSERT INTO PATHWAYS VALUES('Test path', 'C:\\' )");
st.close();
这应该允许您在pathways表的每一列中插入一个值

st.executeUpdate("ALTER TABLE PATHWAYS ADD COLUMN ID_NUMBER VARCHAR(10)");
st.executeUpdate("ALTER TABLE PATHWAYS DROP COLUMN ID_NUMBER"); 
这一个在Pathways表中添加了一个新列

st.executeUpdate("ALTER TABLE PATHWAYS ADD COLUMN ID_NUMBER VARCHAR(10)");
st.executeUpdate("ALTER TABLE PATHWAYS DROP COLUMN ID_NUMBER"); 
此语句从表中删除一列

ArrayList<String> listTables = new ArrayList<>();
ResultSet tables = conn.getMetaData().getTables(null, null, null, null);
while(tables.next()){
String check = tables.getString("TABLE_NAME");
if(check.length() < 3 || !check.substring(0, 3).equals("SYS")) {
listTables.add(check);
    }
}
tables.close();
结合上面的代码,您可以通过遍历列表并选择要删除的表来删除或删除所需的表,在本例中,我将遍历所有表并将其全部删除

ResultSet rs=st.executeQuery("SELECT * FROM USERS");
    while (rs.next()) {
        String first=rs.getString("FIRST_NAME");
        String last=rs.getString("LAST_NAME");
        System.out.println("Name: " + first + " " + last);
    }
    rs.close();
这个选项从一个名为USERS的表中选择所有条目,并将它们放入一个ResultSet中。完成后,您可以迭代该结果集以打印值

希望这至少能给你一个开始,
祝你好运

和您一样,我找不到任何类型的API,但我已经能够从各种示例中整理出以下代码片段。我希望你觉得它有用

我与Derby交互的主要方式是通过字符串SQL查询,如下例所示:

String create = "CREATE TABLE Pathways (" +
"ID_NUMBER VARCHAR(10) NOT NULL," +
"PATH VARCHAR(50))";
Statement st = conn.createStatement();
st.executeUpdate(create);
st.close(); 
这将在数据库中创建表路径,并添加两列:ID\u NUMBER和PATH

DatabaseMetaData dmd = conn.getMetaData();
ResultSet columns = dmd.getColumns(null, null, "PATHWAYS", bob);
while(columns.next()){
System.out.println(columns.getString("COLUMN_NAME"));
}
String bob = NameOfColumnIWantToReturnOrNull
这将允许您查看刚刚创建的表中的所有列

Statement st = conn.createStatement();
st.executeUpdate("INSERT INTO PATHWAYS VALUES('Test path', 'C:\\' )");
st.close();
这应该允许您在pathways表的每一列中插入一个值

st.executeUpdate("ALTER TABLE PATHWAYS ADD COLUMN ID_NUMBER VARCHAR(10)");
st.executeUpdate("ALTER TABLE PATHWAYS DROP COLUMN ID_NUMBER"); 
这一个在Pathways表中添加了一个新列

st.executeUpdate("ALTER TABLE PATHWAYS ADD COLUMN ID_NUMBER VARCHAR(10)");
st.executeUpdate("ALTER TABLE PATHWAYS DROP COLUMN ID_NUMBER"); 
此语句从表中删除一列

ArrayList<String> listTables = new ArrayList<>();
ResultSet tables = conn.getMetaData().getTables(null, null, null, null);
while(tables.next()){
String check = tables.getString("TABLE_NAME");
if(check.length() < 3 || !check.substring(0, 3).equals("SYS")) {
listTables.add(check);
    }
}
tables.close();
结合上面的代码,您可以通过遍历列表并选择要删除的表来删除或删除所需的表,在本例中,我将遍历所有表并将其全部删除

ResultSet rs=st.executeQuery("SELECT * FROM USERS");
    while (rs.next()) {
        String first=rs.getString("FIRST_NAME");
        String last=rs.getString("LAST_NAME");
        System.out.println("Name: " + first + " " + last);
    }
    rs.close();
这个选项从一个名为USERS的表中选择所有条目,并将它们放入一个ResultSet中。完成后,您可以迭代该结果集以打印值

希望这至少能给你一个开始,
祝你好运

对于创建表和插入值之类的简单工作,可以使用ant sql任务和包含sql命令的文件

蚂蚁:


对于创建表和插入值之类的简单工作,可以使用ant sql任务和包含sql命令的文件

蚂蚁: