从ResultSet的内容设置文本字段的文本

时间:2015-05-16 14:43:34

标签: java

我一直在尝试很多语法,但我无法弄明白。 我想在我的数据库中显示“发票编号”到文本字段(表“transaksi”中的字段“invoice”已填充数字)但它不会显示任何内容。这是我的代码:

private void InvoiceActionPerformed(java.awt.event.ActionEvent evt) {                                        
   ResultSet aa = null;
    try {   
    koneksi objKoneksi = new koneksi();
        Connection kon = objKoneksi.bukaKoneksi();
        Statement stat = kon.createStatement();
    String query ="select invoice from transaksii";
    String res = aa.getString(query);
    Invoice.setText(res);
   }
   catch (SQLException e) {}
}    

注意: - 发票是前JTextField1。         - transaksii =我桌子的名字。         - invoice =字段的名称。

谢谢。英语不是我的母语。

2 个答案:

答案 0 :(得分:1)

您没有执行查询。 aa的值为null,您可能会获得NullPointerException

String query ="select invoice from transaksii";
aa=stat.executeQuery(query);
if(aa.next())
String res = aa.getString("invoice");

注意:拥有一个空catch不是一个好习惯,因为你最终会不知道现在这样的异常。你应该在catch块中做e.printStackTrace();

答案 1 :(得分:1)

原始代码中只有1个问题。在行aa = stat.executeQuery(query);中返回的结果集当前位于返回第一个结果之前的位置。所以当你打电话给aa.getString时,它不会像第一个结果那样返回任何东西。此外,ResultSet.getString采用int的参数或表示列名的String参数。但在您的情况下,您已将查询作为参数传递。

因此,如果您只想返回ResultSet的第一项,则更正的代码应为:

private void InvoiceActionPerformed(java.awt.event.ActionEvent evt) {                                        
   ResultSet aa = null;
    try {   
    koneksi objKoneksi = new koneksi();
        Connection kon = objKoneksi.bukaKoneksi();
        Statement stat = kon.createStatement();
        String query ="select invoice from transaksii";
        aa = stat.executeQuery(query);
        String res = "";
        if(aa.next()){ // checks and moves it to 1st position
           res = aa.getString("invoice"); //column name of the column
        }
        Invoice.setText(res);
   }catch(SQLException e){
        e.printStackTrace();
   }finally{
        //The closing of connection, statement and resultset.
   }
}