2012-01-17 40 views
1

我想使用JDBC從Java程序中檢查存在於MySQL表中的表basestation。我的代碼是:嘗試使用JDBC測試MySQL數據庫中是否存在特定表時發生錯誤

conn = DriverManager.getConnection(url, username, password); 

DatabaseMetaData dbm = conn.getMetaData(); 

tables = dbm.getTables(null, null, "basestations", null); 

if (tables.next()) 
{ 
    //Table exists in database 
    //... 
} 
else 
{ 
    //Table does not exist 
    //... 
} 

但雖然表basestations在我的數據庫中存在似乎是我的代碼不會進入第一條款,總是決定表不存在,自然造成試圖創建表時table already exists in database SQL錯誤從一開始就。

+0

你能提供'getTables(null,null,null,null)的輸出嗎? – Viruzzo 2012-01-17 16:28:57

+1

如果你使用''BASESTATIONS''或''''basestations \'''會發生什麼? – 2012-01-17 16:34:17

回答

2

不要做以下的最佳方式。但你可以做到以下幾點:

使用JDBC發送以下語句:

select count(*) from information_schema.tables where information_schema.table_schema='your_schema' and information_schema.table_name='basestations'; 

解析JDBC結果集。

這應該返回1或0.如果結果的計數是1,那麼該表存在,否則它不會。

-1

我懷疑你的getTables()沒有在這裏返回任何東西。根據getTables文檔僅返回與目錄,模式,表名和類型條件匹配的表格描述。在你的情況下,目錄和模式是空的,這可能是不正確的(我猜),用適當的值填充它們。

+1

閱讀文檔:'null'表示「忽略過濾器的這一部分」。 – Viruzzo 2012-01-17 16:38:56

+0

@thinksteep:不,它肯定會返回一些東西 – nikos 2012-01-17 16:46:46

相關問題