猿问

尝试运行 sql 语句时在当前游标位置的操作无效

我试图从数据库中检索一行数据,但它给我一个错误 Invalid operation at current cursor position。


下面是我数据库中的这个示例


ID 大陆国家国家地标


81 亚洲日本 大阪环球影城 日本


...public static void main(String[] args) {

   LocationDA locate = new LocationDA();

   ResultSet rs =  locate.getRecord("81");

   try{

       System.out.println(rs.getString(5));

   }catch(Exception ex){

       System.out.println(ex.getMessage());

   }

}



public ResultSet getRecord(String id) {

    String sql = "SELECT * FROM LOCATION WHERE ID = ?";

    ResultSet rs = null;


    try {

        PreparedStatement pstmt = conn.prepareStatement(sql);

        pstmt.setString(1, id);

        rs = pstmt.executeQuery();

    } catch (SQLException ex) {

        ex.getMessage();

    }


    return rs;

}

假设所有连接都已声明并且我的数据在我的数据库中。我的 getRecord() 在类名 LocationDA 中。我在数据库中的 ID 声明为 varchar,它是主键。我的错误在哪里,我该如何解决?


ITMISS
浏览 136回答 2
2回答

红颜莎娜

尝试这个:try{       rs.next();       System.out.println(rs.getString("5"));   }catch(Exception ex){       System.out.println(ex.getMessage("5"));   }

梦里花落0921

你的连接在哪里打开?您不应该无限期或不必要地保持连接打开。您的结果集没有调用其 next() 函数,因此您没有迭代数据。但是,您不应该通过公共方法(或一般恕我直言)传递结果集。而是创建一个类来表示结果集中的数据,并将结果集加载到所述对象中(然后返回)。尝试改为:public static void main(String[] args) {    LocationDA locate = new LocationDA();    Record record =  locate.getRecord("81");    try{        System.out.println(record.getLandmark());    }catch(Exception ex){        System.out.println(record.getMessage());    } }public ResultSet getRecord(String id) {    String sql = "SELECT * FROM LOCATION WHERE ID = ?";    try (Connection conn = ConnectionManager.getConnection()){        PreparedStatement pstmt = conn.prepareStatement(sql);        pstmt.setString(1, id);        ResultSet rs = pstmt.executeQuery();        while(rs.next()){            Record record = new Record();            record.setContinent(rs.getString(2));            //etc.            return record;        }    } catch (SQLException e) {        e.printStackTrace();    } catch(Exception e){        e.printStackTrace();    }    return null;}可以更改它以满足您的需要(例如不返回 null);
随时随地看视频慕课网APP

相关分类

Java
我要回答