1

basestationJDBCを使用してJavaプログラムから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エラーが発生します。

4

2 に答える 2

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の場合、テーブルは存在します。それ以外の場合は存在しません。

于 2012-01-17T16:44:55.667 に答える
-1

getTables()がここに何も返さないのではないかと思います。getTablesのドキュメントに従って、カタログ、スキーマ、テーブル名、およびタイプの基準に一致するテーブルの説明のみが返されます。あなたの場合、カタログとスキーマはnullであり、正しくない可能性があります(私の推測では)、適切な値を入力してください。

于 2012-01-17T16:35:09.247 に答える