[英]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.