- 締切済み
JSPでデータベースにファイルを挿入するとエラー
urizakaです さて、現在SQL-ServerのimageフィールドにJSPで指定したデータを入力するというプログラムを組んでいるのですが、ストリームから出力したデータをデータベースに入力しようとすると以下のようなSQLExceptionが出てしまいます。 「End of InputStream reached before satisfying length specified when InputStream was set」 これって、いったいどういうエラーなのでしょうか? 自分でも調べてみたのですが、ファイルのアップロードのプログラムを今回始めてやるせいもあってちんぷんかんぷんです。 尚、ソースコードは以下のようになっております。 public void upFile(InputStream InSte){ String ufStmt = "insert into m_File (tempfile) values(?)"; int num; try{ open(); PreparedStatement stmt = con.prepareStatement (ufStmt); stmt.setBinaryStream(1,InSte,1024); num = stmt.executeUpdate(); stmt.close(); close(); } catch(SQLException ex){ System.out.println("upFileのSQLエラー" + ex); System.out.println(ufStmt); } catch(java.lang.Exception ex){ System.out.println("upFileのエラーB " + ex); } } すみませんが、宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mkim
- ベストアンサー率67% (25/37)
こんにちは。 ちょっとエラー内容については、なんとも言えませんが、 そして、予想ですが、setBinaryStreamがVARCHARと互換性はもつが imageだと駄目とか、そんな気がしたのですが。。。 もし、そうであれば逃げ道として、データ型をimageからVARCHARにする。 もしくは、マッピングするなどになるのかなぁ。。。 など、考えてみました。 ちと、SQLServer・Javaについての知識が乏しいため、検討違いであれば すいません。 imageってXMLファイルになるのかな。。。
補足
urizakaです 解答ありがとうございます。 ええと、setBinaryStreamを使ってimageフィールドにデータを挿入することはできます。というか、サーブレット部分でストリームの大きさを測るプログラムを組んで、それを引数として与えるようにプログラムを変えるとできました。 さて、今度の問題はダウンロードなのですが…これは違う問題になるので、別の質問を立てることにしますね。 それでは…