Derby DB表创建和连接

时间:2018-02-06 19:20:32

标签: java jdbc derby

我正在编写一套基于Eclipse控制台的文字游戏,并集成了一个嵌入式Derby DB驱动程序,用于存储用户结果历史记录。

我的问题是关于Derby表的初始化。

Derby数据库连接本身有一个条件检查器: “jdbc:derby:dbName; create = true” 因此,如果数据库存在,则连接,如果不存在则创建。

我被困在如何使用数据库中的TBL执行此操作。即使有这个类似问题的帮助:how to create table if it doesn't exist using Derby Db

我在下面提供了我的代码。我的代码在表'RPS'的查询中抛出了一个sql异常。 (我的dbName是'RPSdb',TBL名称是'RPS'。)

此异常由我的catch块捕获并传递给另一个类中的静态方法('DerbyHelper')。此静态方法现在设置为始终返回true。

我的问题是如何编写catch块和相应的helper类,以便我可以实现上面提到的TBL功能?

 Connection conn = null;
 ArrayList<Statement> statements = new ArrayList<Statement>(); // list of Statements, PreparedStatements
 Statement s;
 ResultSet rs = null;

    try {
             conn = DriverManager.getConnection(protocol + dbName + ";create=true");

             conn.setAutoCommit(false);

             s = conn.createStatement();
             statements.add(s);

             rs = s.executeQuery("select * from RPS");
             rs.next();
             int cG = rs.getInt(1) + corGuess;
             int iCG = rs.getInt(2) + inCorGuess;

             s.executeUpdate("UPDATE RPS SET corGuesses = " + cG 
                     + ", inCorGuesses= " + iCG);

             conn.commit();

         }
         catch( SQLException e ) {
            if( DerbyHelper.tableAlreadyExists( e ) ) {
               // what do I do here??
            }
        }

1 个答案:

答案 0 :(得分:2)

接口java.sql.Connection的方法getMetaData()返回java.sql.DatabaseMetaData,该接口包含方法getTables(),它将告诉您数据库表是否存在。