2017-09-18 9 views
0

私は、3つの列、imageID、username、imageを持つSQLという名前のテーブルを持っています。特定のユーザーの写真をすべて1つの配列にまとめることを試みていますが、なんらかの理由で正しく動作しません。私は何が間違っているのか分からない。画像はlistOfImages配列に行くとイメージの名前がimagenameの配列に入る:SQLデータベースからデータを読み取る際に問題が発生しました。

ArrayList<BufferedImage> listOfImages = new ArrayList<BufferedImage>(); 
ArrayList<String> imageName = new ArrayList<String>(); 

try { 
    myConn = connection 

    String sql = "SELECT * FROM images WHERE username=?"; 
    PreparedStatement statement = myConn.prepareStatement(sql); 
    statement.setString(1, username); 

    ResultSet result = statement.executeQuery(); 
    while (result.next()) { 
      String getImageName = result.getString("imageID"); 
      Blob blob = result.getBlob("image"); 
      listOfImages.add(javax.imageio.ImageIO.read(blob.getBinaryStream())); 
      imageName.add(getImageName); 
     } 

    myConn.close(); 
} catch (SQLException ex) { 
    ex.printStackTrace(); 
} catch (IOException ex) { 
    ex.printStackTrace(); 
} 

System.out.println(imageName); 

エラーメッセージ:

Stack trace:Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
listOfImages.add(javax.imageio.ImageIO.read(blob.getBinaryStream())); 

問題は、私が間違ってバッファリングされたイメージにBLOBを変換したことがあります。それを行う正しい方法は何ですか?

+1

*どうして*うまくいかないのですか?エラーが発生していますか?予期しない動作をしていますか?もしそうなら、あなたのプログラムは何をすべきでしょうか?それは実際に何をしていますか?理想的には[mcve]を提供する必要がありますが、少なくともあなたの問題を詳細に記述する必要があります。 – azurefrog

+1

私はあなたの質問を読むことから何がうまくいかないのか分かりませんが、中のIf文はそこに属していません。 – isaace

+0

スレッド「AWT-EventQueue-0」のjava.lang.NullPointerExceptionで例外が発生しました。私はそれをトレースしようとしましたが、エラーの原因がどこから来ているのか理解していません – yuin265

答えて

0

解決済み:SQLデータベース内のBLOBエントリにNULL値がありました。それを読むとエラーが発生しました。

関連する問題