繁体   English   中英

执行搜索查询时,如何将日期从sql数据库返回到netbeans jdatechooser?

[英]How do i get Date back from sql Database to netbeans jdatechooser when i execute search query?

当我执行搜索查询时,出现错误“ java.sql.SQLException:对空结果集的非法操作”。 我想从我的数据库获取日期到jDateChoser。 这就是我尝试过的,请帮帮我! 提前致谢!

try { 
        Statement s = DB2.kavish().createStatement();

        ResultSet rs = s.executeQuery("SELECT * FROM Invoice WHERE Invoice_No='"+jTextField28.getText()+"'");

        while (rs.next());

        jTextField29.setText(rs.getString(2));
        jTextField30.setText(rs.getString(3));
        jTextField31.setText(rs.getString(4));
        jTextField32.setText(rs.getString(5));
        jTextField33.setText(rs.getString(6));
        jTextField34.setText(rs.getString(7));
        jTextField35.setText(rs.getString(8));
        jDateChooser1.setDate(rs.getDate(9));


    } catch (Exception e) {
    e.printStackTrace();
    }

使用以下方式

try{ 
Statement s = DB2.kavish().createStatement();
        ResultSet rs = s.executeQuery("SELECT * FROM Invoice WHERE Invoice_No='"+jTextField28.getText()+"'");

        while (rs.next()){

        jTextField29.setText(rs.getString(2));
        jTextField30.setText(rs.getString(3));
        jTextField31.setText(rs.getString(4));
        jTextField32.setText(rs.getString(5));
        jTextField33.setText(rs.getString(6));
        jTextField34.setText(rs.getString(7));
        jTextField35.setText(rs.getString(8));
        jDateChooser1.setDate(rs.getDate(9));

}
    } catch (Exception e) {
    e.printStackTrace();
    }

你有分号; 在此行中while (rs.next()); 去掉它

最初,光标位于第一行之前。 rs.next方法将光标移动到下一行。 如果光标位于最后一行之后,则此方法返回false。 此方法使用while循环重复调用ResultSet.next方法,以遍历ResultSet中的所有数据。 您正在尝试在while循环之后进行检索,这意味着游标已经在底部,因此没有数据在此处。

注意

为了防止SQL Injection请使用PreparedStatement代替Statement ,如下所示

PreparedStatement pt=DB2.kavish().prepareStatement("SELECT * FROM Invoice WHERE Invoice_No=?");
pt.setString(1,jTextField28.getText());
ResultSet rs=pt.executeQuery();
while (rs.next()){

    jTextField29.setText(rs.getString(2));
    jTextField30.setText(rs.getString(3));
    jTextField31.setText(rs.getString(4));
    jTextField32.setText(rs.getString(5));
    jTextField33.setText(rs.getString(6));
    jTextField34.setText(rs.getString(7));
    jTextField35.setText(rs.getString(8));
    jDateChooser1.setDate(rs.getDate(9));

}
} catch (Exception e) {
e.printStackTrace();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM