• 締切済み

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); } }  すみませんが、宜しくお願いします。

みんなの回答

  • mkim
  • ベストアンサー率67% (25/37)
回答No.1

こんにちは。 ちょっとエラー内容については、なんとも言えませんが、 そして、予想ですが、setBinaryStreamがVARCHARと互換性はもつが imageだと駄目とか、そんな気がしたのですが。。。 もし、そうであれば逃げ道として、データ型をimageからVARCHARにする。 もしくは、マッピングするなどになるのかなぁ。。。 など、考えてみました。 ちと、SQLServer・Javaについての知識が乏しいため、検討違いであれば すいません。 imageってXMLファイルになるのかな。。。

urizaka
質問者

補足

 urizakaです  解答ありがとうございます。  ええと、setBinaryStreamを使ってimageフィールドにデータを挿入することはできます。というか、サーブレット部分でストリームの大きさを測るプログラムを組んで、それを引数として与えるようにプログラムを変えるとできました。  さて、今度の問題はダウンロードなのですが…これは違う問題になるので、別の質問を立てることにしますね。  それでは…

関連するQ&A