这是下一个按钮的代码
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt)
{
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try{
Class.forName("org.apache.derby.jdbc.ClientDriver");
String srt="jdbc:derby://localhost:1527/silicon";
con=DriverManager.getConnection(srt,"rock","brock");
ps=con.prepareStatement("select * from stu where id="+jTextField1.gettext(),
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs=ps.executeQuery();
if(rs.next()) {
jTextField1.setText(String.valueOf(rs.getInt("id")));
jTextField2.setText(rs.getString("nam"));
jTextField3.setText(rs.getString("qu"));
jTextField4.setText(String.valueOf(rs.getInt("pr")));
jTextField5.setText(String.valueOf(rs.getInt("mob")));
jTextField6.setText(String.valueOf(rs.getInt("ad")));
}
else
{
JOptionPane.showMessageDialog(new studentf(), " no record record to navigate in text field");
}
con.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());</i>
}
}
当你看到代码我想要这样的编码方式,每当我点击下一个按钮我只是移动到下一个记录我尝试大多数选项,每次我搜索所有主题,但这些都没有帮助我找到我的解决方案我只想点击下一步按钮,文本字段上的数据更改为下一条记录意味着它显示下一条记录我得到了一个项目,我完成了添加搜索删除第一个最后只有2个按钮无法做下一个和左 上一个按钮。请帮助
答案 0 :(得分:1)
看起来这个代码存在很多问题,但我会谈到最明显的问题。如果我理解错误,请原谅我的无知,但如果每次按下按钮时你的当前代码都会执行,那么每次都会得到一个全新的ResultSet
,所以每次按下按钮你都会显示新结果集的第一个结果。
您需要在此方法之外调用rs=ps.executeQuery();
,以便您不会每次都重新定义rs
。这样调用if(rs.next()){}
将转移到下一个结果,而不是每次都导航到第一个结果。
制作以下实例变量;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
并将以下内容添加到构造函数(或类似内容)中;
Class.forName("org.apache.derby.jdbc.ClientDriver");
String srt = "jdbc:derby://localhost:1527/silicon";
con = DriverManager.getConnection(srt,"rock","brock");
ps = con.prepareStatement("select * from stu",
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = ps.executeQuery();
警告,您必须通过调用con.close();
来考虑关闭连接的方法。您可以在con.close()
内拨打@Override protected void finalize(){}
,但没有100%保证在您的异议被GC清除时该方法会运行。
我希望这会有所帮助。
修改:好像您对JDBC
和PreparedStatement
提出了很多疑问。如果您需要进一步阅读,以下是Oracle JDBC和PreparedStatement教程的链接。可能需要对该主题有更全面的了解。