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();
}
_
つかいます:
_Array a = rs.getArray("is_nullable");
String[] nullable = (String[])a.getArray();
_
説明通り こちら
Array
はSQL型、getArray()
は、Java配列にキャストするオブジェクトを返します。
配列をオブジェクトに一般化する
Object[] type; //this is generic can use String[] directly
Array rsArray;
rsArray = rs.getArray("data_type");
type = (Object [])rsArray.getArray();
ループを文字列として使用します。
type[i].toString();
どのようにSQL配列からArrayListのプロパティを設定するには:
Array a = rs.getArray("col"); // smallint[] column
if (a != null) {
yourObject.setListProperty(Arrays.asList((Integer[]) a.getArray()));
}
これは役に立ちます
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);
}
}
}
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);
}
}
}