簡體   English   中英

java.sql.SQLException:無效的光標位置

[英]java.sql.SQLException: Invalid cursor position

我創建了一個簡單的應用程序,使用戶可以購買門票。 但是,每當我嘗試購買“ n”張門票時,都會遇到此錯誤。 現在,我知道在使用數據庫進行操作時需要crs.next()語句,我已經使用了很多次,但是由於某種原因,它在這里不起作用。 它給了我java.sql.SQLException:無效的光標位置錯誤。

這是我插入票證的代碼段。

public void buyTicket(int id,int n,int price) throws SQLException{

    crs.setCommand("SELECT PAYID FROM PAYMENTINFO WHERE ACCOUNT = '"+2134541+"'");
    crs.execute();
    crs.next();
    payID = crs.getInt("PAYID");


    for(int i=0;i<n;i++){

    crs.setCommand("Insert into Tickets (TicketType,EventID,UserID,PayID,Price) values ("+false+","+id+
            ","+ loginBean.getuID() + ","+payID+","+price+")");

    crs.execute();
    crs.next();
    }

    crs.setCommand("UPDATE EVENTS SET MAXTICKETS = MAXTICKETS - "+n+"WHERE EVENTID = "+eb.getEventID());
    crs.execute();
    crs.next();

}

內出現該問題的for loop .The payID設置和使用payID我嘗試插入票表。 如果在crs.next()語句上放置斷點, crs.next()輸入數據。 沒有它,它給了我例外。 謝謝您的幫助

CRS初始化

CachedRowSet crs = RowSetProvider.newFactory()。createCachedRowSet();

    crs.setUrl("jdbc:derby://localhost:1527/Events Ticket Management");

    crs.setUsername("x");

    crs.setPassword("x");

更新

INSERT語句放在try-catch塊中之后,票證被輸入到數據庫中,但是更新現在崩潰了,給出了java.lang.NullPointerException

由於捕獲到異常,因此該方法用作臨時修復程序。 這不能讓我設置票數為“ n”,而只能設置2張票! 另外,它給出了java.lang.NullPointerException,因為我沒有將ID設置為eventID 從我這邊有點草率。

   public void buyTicket(int id,int n,int price) throws SQLException{
    crs.setCommand("SELECT PAYID FROM PAYMENTINFO WHERE ACCOUNT = '"+account+"'");
    crs.execute();
    crs.next();
    payID = crs.getInt("PAYID");

    try{
    for(int i=0;i<n;i++){

    crs.setCommand("Insert into Tickets (TicketType,EventID,UserID,PayID,Price) values ("+false+","+id+
            ","+ loginBean.getuID() + ","+payID+","+price+")");

    crs.execute();
    crs.next();


    }
    }
    catch(SQLException e){

    System.out.println("  Message:    " + e.getMessage());
    e = e.getNextException();}

    try{
    crs.setCommand("UPDATE EVENTS SET MAXTICKETS = MAXTICKETS - "+n+"WHERE EVENTID = "+id);
    crs.execute();
    crs.next();
    }
    catch(SQLException e ){

    System.out.println("  Message:    " + e.getMessage());
    e = e.getNextException();
    }


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM