为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2023-05-24 14:48:11
我试图从数据库中检索一行数据,但它给我一个错误 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,它是主键。我的错误在哪里,我该如何解决?
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

尝试这个:


try{

       rs.next();

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


   }catch(Exception ex){

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

   }


查看完整回答
反对 回复 2023-05-24
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

你的连接在哪里打开?您不应该无限期或不必要地保持连接打开。您的结果集没有调用其 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);


查看完整回答
反对 回复 2023-05-24
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信