方法是通過查詢資料庫meta資料來擷取資料表。
public static Boolean doesTableExist(String tablename) {<br /> Connection con = null;<br /> HashSet<String> set = new HashSet<String>();<br /> try {<br /> Class.forName(DatabaseConnection.getDatabaseConnection());<br /> con = DriverManager.getConnection(DatabaseName.con);<br /> DatabaseMetaData meta = con.getMetaData();<br /> ResultSet res = meta.getTables(null, null, null,<br /> new String[]{"TABLE"});<br /> while (res.next()) {<br /> set.add(res.getString("TABLE_NAME"));<br /> }<br /> res.close();<br /> con.close();<br /> } catch (Exception e) {<br /> System.err.println("Exception: " + e.getMessage());<br /> }<br /> //System.out.println(set);<br /> return set.contains(tablename.toUpperCase());<br /> }
其中只需要替換DatabaseConnection.getDatabaseConnection()
和DatabaseName.con
為你需要串連的資料庫就好了。可以參考另一篇文章如何串連埠通的資料庫:http://blog.csdn.net/autofei/archive/2010/05/24/5621274.aspx
另外一個方法就是嘗試串連資料庫,然後捕獲異常。
//connection = new DatabaseConnection(DatabaseConnection.DERBY, "", "db","uncc", "uncc");<br />connection = new DatabaseConnection(DatabaseConnection.POSTGRES, "localhost", "postgres",<br />"postgres", "postgres");<br />database = new Database(connection);</p><p>// Checks to see if database structure already exists<br />boolean exists = true;<br />Statement stmt = connection.getStatement();<br />try {<br />stmt.executeQuery("SELECT * FROM qgram");<br />} catch (Exception e) {<br />connection.rollback();<br />exists = false;<br />}
參考:http://www.herongyang.com/jdbc/JDBC-ODBC-Flat-File-List-Tables.html