剛剛被一個比較麻煩的問題所困擾。這個問題就是如何判斷數據中某張表是否存在,如果不存在則創建它。
恩,我先用了最笨的方法,就是寫個select從表中讀數據,捕獲異常的同時就知道了改表沒有創建。
此法不通,因為這個時候的異常似乎被認定為了系統錯誤,于是后面創建表的代碼被忽略了。
大部分人的做法類似于select system.table where tabblename='***',反正我曾經用類似的句子查詢過DB2,是成功的。
但是,我現在面對的不是DB2,而是7個不同的數據庫,基本上常用的都包括了。是不是每類數據庫都有上面的查詢語句呢?是否查詢語句相似呢?于是我挑了hsqldb,也是當前的默認數據庫,來尋找解決辦法。
很遺憾,我沒有找到類似前面的句子。正當我打算放棄的時候發現了下面的代碼,這段代碼是我從一個國外的論壇中找到的,盡管我不知道它是不是萬能鑰匙,但是他這次對我而言確成了萬能的:
java.sql.Connection?con?=?getYourConnection();
???
ResultSet?rs?=?con.getMetaData().getTables(null,?null,?"yourTable",?null);

if?(rs.next())?
{
//yourTable?exist

}else?
{
//yourTable?not?exist
}
恩,我先用了最笨的方法,就是寫個select從表中讀數據,捕獲異常的同時就知道了改表沒有創建。
此法不通,因為這個時候的異常似乎被認定為了系統錯誤,于是后面創建表的代碼被忽略了。
大部分人的做法類似于select system.table where tabblename='***',反正我曾經用類似的句子查詢過DB2,是成功的。
但是,我現在面對的不是DB2,而是7個不同的數據庫,基本上常用的都包括了。是不是每類數據庫都有上面的查詢語句呢?是否查詢語句相似呢?于是我挑了hsqldb,也是當前的默認數據庫,來尋找解決辦法。
很遺憾,我沒有找到類似前面的句子。正當我打算放棄的時候發現了下面的代碼,這段代碼是我從一個國外的論壇中找到的,盡管我不知道它是不是萬能鑰匙,但是他這次對我而言確成了萬能的:












?