アプリ版:「スタンプのみでお礼する」機能のリリースについて

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);
}
}

 すみませんが、宜しくお願いします。

A 回答 (1件)

こんにちは。



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

ちと、SQLServer・Javaについての知識が乏しいため、検討違いであれば
すいません。
imageってXMLファイルになるのかな。。。

この回答への補足

 urizakaです
 解答ありがとうございます。

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

補足日時:2002/01/18 10:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!