36

information_schema.columnsPostgreSQL データベースのテーブルにクエリを実行しています。テーブル名を使用して、結果セットはすべての列名、型、および NULL 可能かどうか (主キー 'id' を除く) を検出します。これは使用されているクエリです。

SELECT column_name, is_nullable,data_type FROM information_schema.columns
WHERE lower(table_name) = lower('TABLE1') AND column_name != 'id'
ORDER BY ordinal_position;

これらの結果ごとに文字列配列がありgetArray(String columnLabel)、結果のループを避けるために ResultSet メソッドを使用しようとしています。返された配列を文字列配列に格納したいのですが、型の不一致エラーが発生します

Type mismatch: cannot convert from Array to String[]

SQL Array オブジェクトを String[] に変換または型キャストする方法はありますか?

関連コード:

String[] columnName, type, nullable;

//Get Field Names, Type, & Nullability 
String query = "SELECT column_name, is_nullable,data_type FROM information_schema.columns "
        + "WHERE lower(table_name) = lower('"+tableName+"') AND column_name != 'id' "
        + "ORDER BY ordinal_position";

try{
    ResultSet rs = Query.executeQueryWithRS(c, query);
    columnName = rs.getArray(rs.getArray("column_name"));
    type = rs.getArray("data_type");
    nullable = rs.getArray("is_nullable");
}catch (Exception e) {
    e.printStackTrace();
}
4

4 に答える 4

60

使用する:

Array a = rs.getArray("is_nullable");
String[] nullable = (String[])a.getArray();

ここで説明したように

ArraySQL 型で、getArray()Java 配列にキャストするオブジェクトを返します。

于 2013-02-18T11:24:48.340 に答える
4

配列をオブジェクトに一般化する

    Object[] type; //this is generic can use String[] directly
    Array rsArray;

    rsArray = rs.getArray("data_type");
    type = (Object [])rsArray.getArray();

文字列としてループして使用:

type[i].toString();
于 2013-02-18T11:22:57.357 に答える