0

私のJavaアプリケーションでは、以下のコードが正常に動作しています。しかし、それらに加えて顧客の写真も表示したい. 写真をブロブとしてデータベースに保存したくありません。写真をローカルドライブに保存してjLabelに表示したいだけです。誰でも私を助けることができますか?

try{
    Class.forName("org.apache.derby.jdbc.ClientDriver");
    Connection conn= DriverManager.getConnection("jdbc:derby://localhost:1527/C:/gymsoft/data", "APP", "app");
    Statement stmt=conn.createStatement();
    String query ="SELECT * FROM CUSTOMER WHERE CODE = '"+jTextField1.getText()+"' ";
    ResultSet rs = stmt.executeQuery(query);
    if(rs.next()) {
        String w = rs.getString("NAME");
        String x = rs.getString("CODE");
        TF1.setText(w);
        TF2.setText(x);
    } else {
        JOptionPane.showMessageDialog(null, "User Not Found!!");
    }
} catch ( ClassNotFoundException | SQLException e) {
    JOptionPane.showMessageDialog(null, "Error In Connection!!");
} 
4

1 に答える 1

2

で画像を表示することJLabelは確かに可能です。リンクから画像を取得することも可能です。ただし、コード内にそれらの試みは見つかりませんでした。

私があなたのコードで見つけたのは

  • SQL インジェクションに対する脆弱性。ユーザーが次のjTextField1ようなものを入力すると

    3';drop database app`
    

    データベースにさよならを言うことができます

  • データベース クエリと UI コンポーネントの更新の混合。通常、データベース クエリは低速であるため、UI を更新するスレッドと同じスレッドで実行しないでください。さらに、すべての Swing コンポーネントはイベント ディスパッチ スレッドで更新する必要があるため、コード全体をワーカー スレッドに移動することはできません。それらを分離する必要があります。詳細については、Swing ガイドの並行性を参照してください。
  • を閉じるのを忘れましたConnectioncloseそのようなステートメントを追加するときは、finallyブロックで実行してください
于 2012-10-19T06:30:32.903 に答える