首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试运行sql语句时在当前游标位置的操作无效

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

Stack Overflow用户
提问于 2019-08-08 20:19:46
回答 2查看 97关注 0票数 0

我试图从数据库中检索一行数据,但它在当前光标位置给了我错误的无效操作。

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

欧洲大陆国家地标

81亚洲日本大阪环球影城

代码语言:javascript
复制
...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,它是主键。我的错误在哪里,如何解决?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-08 20:34:06

试试这个:

代码语言:javascript
复制
try{
       rs.next();
       System.out.println(rs.getString("5"));

   }catch(Exception ex){
       System.out.println(ex.getMessage("5"));
   }
票数 0
EN

Stack Overflow用户

发布于 2019-08-08 20:38:19

您的连接在哪里开通?您不应该无限期地或不必要地保持连接打开。结果集没有调用它的下一个()函数,所以不迭代数据。但是,您不应该通过公共方法传递结果集(或者通常是imho)。相反,创建一个类来表示结果集中的数据,并将结果集加载到所述对象中(然后返回该对象)。

试一试:

代码语言:javascript
复制
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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57420022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档