2012-03-06 9 views
0

は、私が思うMYTABLEが、名前がOracleでNUMBER型のMYTABLEIDである列を持っているならば、どのように私は何がなることを知っている得ることができることを知ってもらうことができ、このコードセグメントでは、このコードセグメントjavaでデータベース固有のデータ型を取得する方法は?

Class.forName ("oracle.jdbc.OracleDriver"); 

      connection = DriverManager.getConnection 
      ("jdbc:oracle:thin:@//XXX.XXX.XXX.XXX:1521/xe", "abc", "def"); 
DatabaseMetaData metaData=connection.getMetaData(); 
     ResultSet rsc= metaData.getColumns(null, "MYSCHEMA", "MYTABLE", null); 
     while (rsc.next()){ 

      System.out.println(rsc.getString("COLUMN_NAME").toUpperCase()); 
      System.out.println(rsc.getString("TYPE_NAME").toUpperCase()); 
      System.out.println(rsc.getInt("COLUMN_SIZE")); 
      System.out.println(rsc.getInt("DECIMAL_DIGITS")); 
      System.out.println(rsc.getString("IS_NULLABLE").toUpperCase()) ; 
      System.out.println(rsc.getInt("ORDINAL_POSITION")); 
      System.out.println(rsc.getInt("DATA_TYPE")); 
      System.out.println("********************************************"); 
     } 

を考えてみましょうMysqlまたはPostGresqlで対応するNUMBER相当のデータ型名?基本的には、データベース固有のデータ型を取得することです。 OracleのようにCLOBデータ型がありますが、postgresqlには同等のデータ型としてbyteaがあります。私は、特定のデータベース(oracleからmysqlまたはpostgresqlなど)にテーブルを作成するDDL(Create table statement)を作成できるように、データベース固有のタイプが必要でした。

+0

私はあなたのコードにこれらのデータ型を手動でマップする必要があると思います – MozenRath

+0

@ MozenRathは手動でですか?ああ、神様。それでは、私はバグに招待しています。:( – Rajesh

+1

何を達成したいですか? 'rsc.getObject'を使用して、結果オブジェクトの' instanceof'チェックをしませんか? – Jonathan

答えて

0

各データベースと特定のデータベースのデータ型(CLOB、byteaなど)に関する情報を含むXMLファイルを作成すると、この情報が使用され、コード内で使用されている特定の用途に使用されます。それが役に立てば幸い。

+0

誰かが正しいマッピング情報を共有できれば、3つのoracle、mysql、 postgresql – Rajesh

+0

インターネット上でのみ利用可能です。コンパイルする必要があります - http://www.postgresql.org/docs/8.4/static/datatype.html、http://ss64.com/ora/syntax-datatypes。 html – aretai

関連する問題