Derby Embedded创建表按顺序在任何PC上运行

时间:2014-02-21 17:15:56

标签: java derby

下面是我的Derby嵌入式示例中的代码表单... 当我在我的电脑上运行(开发)它运行顺利。 然后我导出为jar文件并在另一台PC上运行.it抛出一个异常表已经存在。 我怎样才能在任何电脑上创建一次表

public class Main {

    public static void main(String[] args) throws SQLException {
    final String driver="org.apache.derby.jdbc.EmbeddedDriver";
    final String url="jdbc:derby:db/testdb";

    try {
        Class.forName(driver);
        Connection connection=DriverManager.getConnection(url);

        //connection.createStatement().execute("create table channels(channel varchar(20),topic varchar(20))");
    //  connection.createStatement().execute("insert into channels (channel,topic) values('hbo','action')");
    //  System.out.println("saved");
        PreparedStatement preStmt=connection.prepareStatement("select * from channels");
        ResultSet set=null;
        set=preStmt.executeQuery();

        while(set.next()){


            System.out.print(set.getString(1));
            System.out.println(set.getString(2));

        }       

    } catch (ClassNotFoundException e) {

        e.printStackTrace();
    }

    }

另外如何在hibernate.cfg.xml文件中配置相同的问题...... !!

2 个答案:

答案 0 :(得分:0)

您可以在创建表之前检查该表是否已存在。

使用DatabaseMetadata调用在连接数据库后检查数据库的结构。

请参阅:http://docs.oracle.com/javase/6/docs/api/java/sql/DatabaseMetaData.html

答案 1 :(得分:0)

您可以在每次创建之前检查数据库元数据中的检查:

方法如下:

ResultSet result = databaseMetaData.getTables(
    catalog, schemaPattern, tableNamePattern, types );

Abd您可以按照以下方式使用它:

ResultSet result = databaseMetaData.getTables(
    null, null, TABLE_NAME, null );