0

在我的 Java 应用程序中,下面的代码工作正常。但除了他们之外,我还想展示客户的照片。我不想将照片作为 blob 存储在数据库中。我只想将照片存储在某个本地驱动器中并在 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

在 a 中显示图像JLabel当然是可能的。从链接中检索图像也是可能的。但是,我在您的代码中没有发现任何尝试。

我在你的代码中发现的是

  • SQL 注入漏洞。当用户输入jTextField1类似

    3';drop database app`
    

    你可以告别你的数据库

  • 混合数据库查询和 UI 组件更新。数据库查询通常很慢,因此不应在与更新 UI 的线程相同的线程上执行。此外,所有 Swing 组件都应该在 Event Dispatch Thread 上更新,因此不能将整个代码移至工作线程。你需要把它们分开。有关更多信息,请参阅Swing指南中的并发性
  • 你忘了关闭Connection. 添加这样的close语句时,请在一个finally块中执行
于 2012-10-19T06:30:32.903 回答