2012-01-17 6 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

+1

'' BASESTATIONS ''や '' '' '' '' ''ベースステーション '' 'を使うとどうなりますか? –

答えて

2

ない以下のことを行うための最善の方法..しかし、あなたは、次の操作を行うことができます。jdbc結果セットを解析

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

:次の文を送信するために

使用JDBCを。

結果のカウントが1の場合はテーブルが存在し、それ以外の場合はテーブルが存在しません。

-1

getTables()がここで何も返さないと思われます。 getTablesのドキュメントに従ってカタログ、スキーマ、テーブル名、およびタイプの条件に一致するテーブルの説明のみが返されます。あなたのケースでは、カタログとスキーマがnullで、正しくないかもしれません(私の推測)、それらに適切な値を設定します。

+1

文書を読んでください。「ヌル」は「フィルタのこの部分を無視する」ことを意味します。 – Viruzzo

+0

@thinksteep:それは確かに何かを返す – nikos

関連する問題