2016-10-03 90 views
0

我想在創建新表之前檢查表是否存在。我使用下面的方法:檢查表是否存在於informix和postgresql數據庫中

DatabaseMetaData dbmd = con.getMetaData(); 
ResultSet rs = dbmd.getTables(null, null, getTableNamePattern(), null); 
if (rs != null) { 
    if (rs.next()) { 
     return true; 
    } 
} 

有人像了Oracle,SQLServer和MySQL數據庫做精。但是,它不適用於informix和postgresql。任何人都有很好的建議?謝謝

+1

'創建表如果不存在 ...'會在postgres中完成。 – Bill

+1

小寫/大寫問題? Postgres以小寫形式存儲表名,所以您需要以小寫形式傳遞該模式。 –

+0

我不認爲Java代碼應該做這樣的檢查。架構存在並且在啓動Java應用程序之前已由管理員正確初始化,否則就不存在。 – duffymo

回答

0

我剛剛在PostgreSQL上試了一下,它工作得很好。

問題可能出現在您的搜索模式中。這裏有一些事情要記住:

  • _被用作一個字母,%爲任意字符串通配符通配符。

  • 該模式區分大小寫,並且在PostgreSQL中表名默認爲小寫。

+0

我應該使用%作爲參數,並在執行搜索時將其設置爲默認值? –

+0

我不明白這個問題。使用't%'來搜索名稱以't'開頭的所有表格,但是不要指望它也匹配一個大寫的'T'。 –

+0

感謝您的回答。我也拿Jonathan Leffler的答案。我將傳入的表名稱設置爲小寫後,我才能使用它。 –

相關問題