1

という名前の画像が 1 つありますP100.jpg。サイズを変更していて、に変換されていZP100.pngます。挿入クエリにより、データベースMySQLに保存しています。

    File imageFile = new File("F:\\POSTERS\\Roses\\ZP100.png");
    FileInputStream fis = new FileInputStream(imageFile);

    String insertImage = "insert into image values(?,?)";
    prestmt = con.prepareStatement(insertImage);
    prestmt.setInt(1,4);
    prestmt.setBinaryStream(2, fis, fis.available());
    result = prestmt.executeUpdate();

今、その画像を取得し、ラベルに割り当ててフォームに表示したいと考えています。

    String selectImage = "select img from image";
    prestmt = con.prepareStatement(selectImage);

しかし、それは私に例外を与えています

java.sql.SQLException: Can not issue executeUpdate() for SELECTs

私が持っているラベルに画像を割り当てるには:

    image.setText("ZP100.png"); 

私は知っています、それはうまくいきません。これを再コーディングするのを手伝ってください。

4

1 に答える 1

0

最初のエラーは次のようになっている必要があります。

result = prestmt.executeUpdate();

resultタイプで宣言したのではないかと思いますResultSet
そして、あなたがを割り当てるとき、 明らかにint、のリターンタイプが発生します。 executeUpdate()result
SQLException

上記のステートメントを次のように変更します。

int insertResult = prestmt.executeUpdate();

そして、あなたはそれに成功するはずです。

提案

prestmt.setBinaryStream(2、fis、fis.available());

ストリームavailable()からコンテンツを作成する場合は、メソッドに依存しないでください。 これは単なる見積もりであり、ストリームの最後まで読むことができることを保証するものではありません。 read

setBinaryStream代わりに、次のようなメソッドの他のシグネチャを使用してください 。Javadocによると、明示的に読み取る必要がないことを意味します。 変更すると、ステートメントは次のようになります。
setBinaryStream( int parameterIndex, InsputStream is )
The data will be read from the stream as needed until end-of-file is reached.

prestmt.setBinaryStream(2、fis);


画像
私はJavaGUIと画像にあまり取り組んでいません。
しかし、次の場所でいくつかの解決策を参照することを提案できます。

  1. ボタンに画像を追加
  2. 画像付きのラベル
于 2012-05-27T06:22:11.473 に答える