2017-05-08 12 views
0
public static void main(String[] args) { 
    try { 
     Connection c = null; 
     Class.forName("org.postgresql.Driver"); 
     c = DriverManager.getConnection(
       "jdbc:postgresql://localhost:5432/postgres", // db 
       "postgres", // account 
       "ForOnlyOneTick1" // password 
     ); 


     Object loc = Dimension.class; 
     PreparedStatement insertNew = c 
       .prepareStatement("CREATE TYPE loc AS (?);"); 
     insertNew.setObject(1, loc); 

     insertNew.executeUpdate(); 
     insertNew.close(); 

     c.close(); 

    } catch (Exception e) { 
     //e.printStackTrace(); 
     System.err.println(e.getClass().getName() + ": " + e.getMessage()); 
    } 

} 

この例では、データベースに次元タイプを作成しようとしました。 しかし、それは動作しません。POSTGRES SQL JAVAはJavaクラスを使用してカスタムタイプを作成します

Javaクラスのparticolar型の列を作成することはできますか?

私はデータベースで知っているタイプのみを使用できますか?例えば

CREATE TYPE land AS (area Dimension, people ListPeople, probability int, cause Causes); 

寸法、ListPeople、原因は他の公共の値を持つ私のカスタムクラスです:

CREATE TYPE location AS (x int, y int, z int, name VARCHAR(15)); 

はOK、しかし、問題は、私のように型を作成する必要がある場合は継続クラス。

答えて

0

データベースには、Javaクラスについては何も知られていません。データ型を定義するときは、すべての列を明示的にリストする必要があります。

あなたはこのように行うことができます。

CREATE TYPE dimension AS (x int, y int); 
CREATE TYPE listpeople AS (names text[], etc.); 
CREATE TYPE land AS (area dimension, people listpeople, etc.); 
関連する問題