2016-11-30 4 views
0

Java SwingアプリケーションとSQLiteデータベースには小さな問題があります。毎回、選択した行を更新ボタンで更新しようとすると、データベース内の選択された行のイメージがデータベースから削除されます。Java swing&sqlite - update image

私の削除機能:私は間違っ

JFileChooser jfc = new JFileChooser(); 
jfc.showOpenDialog(null); 
File f = jfc.getSelectedFile(); 
filename = f.getAbsolutePath(); 
tetxfield_attach_image.setText(filename); 
lable_picture.setIcon(ResizeImage(filename, null)); 
try { 
    File image = new File(filename); 
    FileImageInputStream fis = new FileImageInputStream(image); 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    byte[] buff = new byte[1024]; 
    for (int readNum; (readNum = fis.read(buff)) != -1;) { 
     bos.write(buff, 0, readNum); 
    } 
    person_image = bos.toByteArray(); 
} catch (Exception e) { 
    JOptionPane.showMessageDialog(null, e); 
} 

String sql = "UPDATE PLAYER SET NAME =? , LAST=?, DOB=?, IMAGE=?, GENDER=?, LAST_UPDATE=? WHERE ID_PLAYER=? "; 

Timestamp timestamp = new Timestamp(System.currentTimeMillis()); 
int id = Integer.parseInt(tf_id.getText()); 

try { 
    pst = conn.prepareStatement(sql); 
    pst.setString(1, tf_name.getText()); 
    pst.setString(2, tf_last.getText()); 

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); 
    String d = sdf.format(t_date.getDate()); 
    pst.setString(3, d); 

    pst.setBytes(4, person_image); 

    if (combobox_male.isSelected()) { 
     gender = "MAN"; 
    } else if (combobox_female.isSelected()) { 
     gender = "WOMAN"; 
    } 
    pst.setString(5, gender); 

    pst.setTimestamp(6, timestamp); 

    pst.setInt(7, id); 
    pst.executeUpdate(); 
} catch (Exception e) { 
    JOptionPane.showMessageDialog(null, e); 
} 

イメージ機能を取り付けマイ?

+1

申し訳ありませんが、これは理解できません。「自分のアプリケーション、選択した行の画像をデータベースから削除します。」 – Berger

+1

あなたの問題は何ですか?更新クエリは行を削除しますか? – AxelH

+1

実際の問題の重要な明確化が有用であろう。 –

答えて

0

pstに設定する前にperson_imageが正しく開始されていることを確認しますか?あなたは新しいデータがないと言いましたので、開始が画像バイトを失う唯一のチャンスであるようです。

+0

Thx world for help、私の問題はいくつかの追加コードで解決されています。私は、私の更新ボタンイベントで画像のコードを別に追加しました。 1.画像のためにのみステートメントを選択します。 2.次に、画像のラベルに配置された選択された画像。 3.画像の更新ステートメント(+選択されたプレイヤーのID)。最高の、Caks – Caks