4

JDBC でコマンドを入力してテーブルを作成したいのですが、最初のコンパイルの後、テーブルが既に生成されている場合、次のすべてのテーブルが例外をスローします。[IF NOT EXISTS] という用語をそこに置いたので、これがどのように可能であるかがわかりません。したがって、SQL エラーは発生しないはずです。

public class Test 
{
    public static void main(String[] args) 
    {
        try
        {
            Connection conn = BazaDanych.Polacz();
            Statement stat = conn.createStatement();

           String command = "CREATE TABLE [IF NOT EXISTS] testowatabela2 (id INTEGER, wartosc DOUBLE PRECISION);";

            stat.execute(command);
        }
        catch(SQLException e)
        {
            System.out.println("SQL Exception in Test");
        }
    }
}
4

2 に答える 2

4

おそらく、句を囲む括弧IF NOT EXISTSは、ドキュメントから逐語的に来ています: http://www.postgresql.org/docs/9.1/static/sql-createtable.html

ただし、括弧は句がオプションCREATE TABLEであることを意味するため、実際のステートメントには存在してはなりません。

考慮すべきもう 1 つの点IF NOT EXISTSは、これは PostgreSQL 9.1 の新機能であるため、古いバージョンでは失敗することです。使用しているバージョンがわからない場合は、SQL で実行します。select version()

于 2012-05-18T12:47:00.957 に答える
0

試す

IF NOT EXISTS (SELECT 1 
           FROM sysobjects 
           WHERE xtype='u' AND name='testowatabela2')
    CREATE TABLE testowatabela2 (id INTEGER, wartosc DOUBLE PRECISION)

編集

パーツをそのままにしておき[IF NOT EXISTS]ます。この回答によると、テーブルが存在するかどうかは関係ありません。

于 2012-05-18T12:10:31.670 に答える