2017-07-26 11 views
0

から2次元配列を取得する方法を私はコンソールでこのようなコードを実行するとPostgre使用してJavaまたはjdbcTemplate

SELECT dimensions FROM public."NEWS" WHERE id = 5 

私が手にこの:(整数の配列)

{{2560,1707},{2560,1707},{720,960},{1200,1600}} 

しかし、私は、Java

ArrayList<String[][]> dimensions = new ArrayList<>(); 
try { 
    PreparedStatement ps = 
     dataSource.getConnection().prepareStatement(
       "SELECT dimensions::varchar[][] FROM public.\"NEWS\" WHERE id = "+id+";"); 
    ResultSet rs = ps.executeQuery(); 
    while(rs.next()) { 
     dimensions.add((String[][]) rs.getArray(1).getArray()); 
    } 
} catch (SQLException ignored) {} 

でコードを書いたとき、私はライン上にNullPointerExceptionを得た:dimensions.add((String[][]) rs.getArray(1).getArray());

Spring FrameworkからjavaまたはjdbcTemlateを使用してPostgreSQLから2次元配列を取得するにはどうすればよいですか?

+0

あなたは2次元配列としてその応答を必要とする具体的な理由があります。 2次元配列が絶対に必要な場合を除き、配列を配列としてマッピングしないでください。 – Chad

+0

これはOracleの質問ですか? –

+0

@Karl Nicholas。私は会社の名前が私の質問と共通していることを理解していません。 Oracle Databaseを意味する場合は、Oracle Databaseを使用しません。 PostgreSQLデータベースとSpringフレームワークを使用したJava 8そしてSpringのクラスJdbcTemplate –

答えて

0

8.15. Arraysのコードに続いて、コードのこのビットはうまく動作するようです:

Class.forName("org.postgresql.Driver"); 

Connection connection = DriverManager.getConnection(
     "jdbc:postgresql://127.0.0.1:5432/testdb", 
     "testdb", 
     "testdb"); 

ResultSet rs = connection.prepareStatement("SELECT * FROM sal_emp").executeQuery(); 

rs.next(); 

java.sql.Array a1 = rs.getArray(2); 
Integer[] o1 = (Integer[])a1.getArray(); 

java.sql.Array a2 = rs.getArray(3); 
String[][] o2 = (String[][])a2.getArray(); 
+0

ありがとうございます。わたしにはできる!!! (Integer []をInteger [] []に変更し、インデックス2と3を1)=) –

+0

さて、Integer配列を取得していたと思っていました。 –

関連する問題