1

同様の質問を探してみましたが、見つけられたので投稿します!特定のテーブルを削除するJavaプログラムを作成しています。MySQLは次のようになります。

String[] tablesToDrop = new String[]{tableName,tableName2};
Connection con = DriverManager.getConnection(dbUrl, userName,password);
Statement stmt = con.createStatement();

for (int i = 0; i < tablesToDrop.length; i++) {
                System.out.println("Dropping " + tablesToDrop[i] + " Table..");
                stmt.executeUpdate("DROP TABLE IF EXISTS " + tablesToDrop[i]);
            }

私の質問は、これがSQL Server2008バージョンをどのように検索するかということです。stmt.executeUpdate(???); 部?テーブルが存在する場合は削除し、配列からテーブル名を取得してforループに渡します。

4

2 に答える 2

3

Javaはドライバーを介してDBと通信します。これは、アプリケーションプログラマーにとって完全に透過的である必要があります。したがって、MySqlとMSSQLサーバーの間に違いはありません。ドライバーを変更するだけです。

ただし、SQL方言の違いである可能性があります。通常、人々はJavaからDBへのマッピングフレームワーク(JPA、Hibernateなど)を使用してこのような違いを回避しようとしますが、プレーンJDBCを使用しているので、それはあなたの責任です。

あなたが今試みている声明はうまくいくと思います。ただし、将来、プレーンJDBCを使用し、複数のDBタイプをサポートする場合は、SQLステートメントを別のファイル(プロパティファイルなど)に保持し、そこから読み取ることをお勧めします。SQLダイアレクトを「ロケール」として使用してResouceBundleメカニズムを悪用することもできます。

于 2012-09-04T11:03:47.227 に答える
3
IF EXISTS(select * from sysobjects where name='tblname') drop table tblname
于 2012-09-04T11:05:56.453 に答える