亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試運行 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條經驗 獲得超13個贊

嘗試這個:


try{

       rs.next();

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


   }catch(Exception ex){

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

   }


查看完整回答
反對 回復 2023-05-24
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

你的連接在哪里打開?您不應該無限期或不必要地保持連接打開。您的結果集沒有調用其 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 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號