5

コードにMySql、jdbc、javaを使用しています。コードで次のことを確認したい:

1-テーブルが特定のデータベースに存在します。2-特定のデータベースの特定のテーブルに列が存在します。

これを行う方法を教えてもらえますか?

4

4 に答える 4

11

正しい方法は、JDBCメタデータを使用することです

Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
DatabaseMetaData metadata = connection.getMetaData();
ResultSet resultSet;
resultSet = metadata.getTables(null, null, "tablename", null);
if(resultSet.next())
    // Table exists

resultSet = metadata.getColumns(null, null, "tablename", "columnName");
if(resultSet.next())
    // Column exists

コードをデバッグするには、最初にすべてのテーブル名をフェッチして、次のように出力することをお勧めします。

resultSet = metadata.getTables(null, null, "%", null);
while(resultSet.next())
    System.out.println(resultSet.getString("TABLE_NAME"));

NB!テーブルがリストされていない場合は、次のバグがある古いバージョンのMySQL JDBCドライバーを使用していますhttp://bugs.mysql.com/bug.php?id=20913アップグレードするか、データベース名を最初の引数として使用する必要があります。 getTables

于 2012-07-30T21:30:54.673 に答える
1

表を探します。

SELECT COUNT(*)
FROM information_schema.tables 
WHERE table_schema = 'db_name' 
AND table_name = 'table_name';

存在する場合は、列を探します。

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'db_name' 
AND TABLE_NAME = 'table_name' 
AND COLUMN_NAME = 'column_name'
于 2012-07-30T21:28:31.597 に答える
0

Connection.getMetaData()を使用し、返されたオブジェクトを使用して、カタログ、スキーマ、テーブル、および列を取得します。

于 2012-07-30T21:26:44.590 に答える
0
 Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
 DatabaseMetaData metadata = connection.getMetaData();
 ResultSet resultSet;
 resultSet = metadata.getTables(null, null, "tablename", null);
 if(resultSet!=null){
   // next() checks if the next table exists ...
      System.out.println("Table exists");
 }
于 2013-01-18T13:25:01.147 に答える