Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中使用next按钮从textfield中的数据库中移动数据_Java_Jdbc_Resultset - Fatal编程技术网

如何在java中使用next按钮从textfield中的数据库中移动数据

如何在java中使用next按钮从textfield中的数据库中移动数据,java,jdbc,resultset,Java,Jdbc,Resultset,这是“下一步”按钮的代码 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");

这是“下一步”按钮的代码

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>

    }

}   
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt)
{   
连接con=null;
PreparedStatement ps=null;
结果集rs=null;
试一试{
forName(“org.apache.derby.jdbc.ClientDriver”);
String srt=“jdbc:derby://localhost:1527/silicon";
con=DriverManager.getConnection(srt,“rock”、“brock”);
ps=con.prepareStatement(“从stu中选择*,其中id=“+jTextField1.gettext(),
ResultSet.TYPE\u SCROLL\u不敏感,
结果集CONCUR_可更新);
rs=ps.executeQuery();
如果(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”)));
}     
其他的
{
showMessageDialog(new studentf(),“无需在文本字段中导航的记录”);
}
con.close();
}
捕获(例外e)
{
System.out.println(e.getMessage());
}
}   
正如你看到的代码,我希望这样的编码方式,每当我点击下一个按钮,我只是移动到下一个记录,我尝试大多数选项,每一次都是可用的,我搜索了这里的所有主题,但没有一个帮助我找到我的解决方案,我只想点击下一个按钮,文本字段上的数据更改为下一个记录,意味着它显示下一个记录我得到了一个项目在这个我做了添加搜索删除第一最后只有2个按钮无法做下一步和

上一个按钮。请帮助

这段代码似乎存在一些问题,但我将讨论最明显的问题。如果我理解错误,请原谅我的无知,但是如果每次按下按钮时都会执行当前代码,那么每次都会得到一个新的
ResultSet
,因此每次按下按钮都会显示新结果集中的第一个结果

您需要调用
rs=ps.executeQuery()
超出此方法的范围,这样您就不会每次都重新定义
rs
。这样调用
if(rs.next()){}
将移动到下一个结果,而不是每次导航到第一个结果

生成以下实例变量

Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
并在构造函数中添加以下内容(或类似内容)

警告一下,您必须想办法通过调用
con.close()来关闭连接。您可以在
@Override protected void finalize(){}
中调用
con.close()
,但无法100%保证当GC清除您的对象时,该方法将运行

我希望这有帮助


Edit:您似乎对
JDBC
PreparedStatement
s有很多问题。如果您需要进一步阅读,以下是Oracle和教程的链接。对该主题的更全面的理解可能是正确的。

当前代码出现了什么问题,您是否收到了任何异常?(如果是,查看堆栈跟踪将非常有用)没有发生什么?我们掌握的信息越多,就越容易帮助您。实际上,我有一个修改,就是ps.setInt(1,Integer.parseInt(jTextField1.getText());那么,如果我将这个查询添加到@rudi kershaw
ps.setInt()
中,那么会发生什么呢?它不会对您当前在问题中遇到的
preparedStatement
执行任何操作。有
ps.setXXX
方法在的查询中定义“?”s。但你们并没有。我在prepared stament query中对程序进行了更改,我从textfiedl中获取了我的id,所以我仍然应该遵循您的解决方案@rudi kershaw,实际上是jdbc中的新版本
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();