有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JavaFX TextField无法从结果集设置文本

我正在开发一个JavaFX应用程序,它可以通过JDBC/ODBC访问数据库。 当我点击一个按钮时,我希望一些文本字段根据结果集更新它们的文本,显示某个用户的名字和姓氏

当我尝试调用TEXTFIELD时。在文本字段的setText(RESULTSET.getString(1))中,我得到一个SQLException:找不到数据

代码如下:

@FXML
private TextField tf_matricula;

@FXML
TextField tf_apellido;

@FXML
TextField tf_apellidos;

@FXML
TextField tf_nombre;

@FXML
public void btn_ir_Action(ActionEvent event){


        try(Connection con  = JDBCHandler.getConnection()){
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("SELECT Apellido, Apellidos, Nombre FROM Alumnos WHERE Matricula='" + tf_matricula.getText() + "'");
            if(rs.next()){
                tf_apellido.setText(rs.getString(1));
                tf_apellidos.setText(rs.getString(2));
                tf_nombre.setText(rs.getString(3));
            }
        }catch(SQLException | ClassNotFoundException ex){
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }

}

我得到的错误信息如下:

No data found
java.sql.SQLException: No data found
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7137)
    at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3906)
    at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5697)
    at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:353)
    at pruebaingresos.SistemasAlumnosFXMLController.btn_ir_Action(SistemasAlumnosFXMLController.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)

奇怪的是,当我将ResultSet信息保存到字符串中,然后将它们传递给TextFields的setText方法时,它就可以完美地工作了。如下图所示

@FXML
public void btn_ir_Action(ActionEvent event){

        try(Connection con  = JDBCHandler.getConnection()){
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("SELECT Apellido, Apellidos, Nombre FROM Alumnos WHERE Matricula='" + tf_matricula.getText() + "'");
            if(rs.next()){
                String apellido = rs.getString(1);
                String apellidos = rs.getString(2);
                String nombre = rs.getString(3);
                tf_apellido.setText(apellido);
                tf_apellidos.setText(apellidos);
                tf_nombre.setText(nombre);
            }
        }catch(SQLException | ClassNotFoundException ex){
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }

}

我知道这个问题实际上已经解决了,但我仍然想知道为什么会发生这种情况,我不想以后因为这个原因出现任何错误,我还没有找到原因


共 (0) 个答案