下面是我的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文件中配置相同的问题...... !!
答案 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 );