web-dev-qa-db-ja.com

結果セットをSQL配列から文字列の配列に変換する

PostgreSQLデータベースの_information_schema.columns_テーブルをクエリしています。結果セットはテーブル名を使用して、すべての列名、タイプ、および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;
_

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

_Type mismatch: cannot convert from Array to String[]
_

SQL配列オブジェクトを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();
}
_
26
Matt

つかいます:

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

説明通り こちら

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

42
BobTheBuilder

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

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

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

ループを文字列として使用します。

type[i].toString();
4
TheWhiteRabbit

どのようにSQL配列からArrayListのプロパティを設定するには:

Array a = rs.getArray("col"); // smallint[] column
if (a != null) {
    yourObject.setListProperty(Arrays.asList((Integer[]) a.getArray()));
}
3
yglodt

これは役に立ちます

Object[] balance = (Object[]) ((Array) attributes[29]).getArray();
        for (Object bal : balance) {

            Object [] balObj =(Object[]) ((Array) bal).getArray();
            for(Object obj : balObj){
                Struct s= (Struct)obj;
                if(s != null ){
                    String [] str = (String[]) s.getAttributes();
                    System.out.println(str);
                }

            }

        }
2
Rajeev Ranjan
Object[] balance = (Object[]) tableObject.getArray();

ここでtableオブジェクトは、dao実装のDBプロシージャコールからのテーブルタイプ配列です。解析する必要があります。

for (Object bal : balance) {
   Object [] balObj =(Object[]) ((Array) bal).getArray();
   for(Object obj : balObj){
       Struct s= (Struct)obj;
        if(s != null ){
             String [] str = (String[]) s.getAttributes();
             System.out.println(str);
         }
   }
}
2
Rajeev