我創建了一個簡單的應用程序,允許用戶購買門票。但是,每當我嘗試購買「n」張票時,我都會遇到此錯誤。現在,我知道在使用數據庫時需要使用crs.next()
語句,我已經使用了很多次,但由於某種原因,它在這裏不起作用。它給我提供了java.sql.SQLException:光標位置無效錯誤。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初始化
CachedRowSet的CRS = RowSetProvider.newFactory()createCachedRowSet()。
crs.setUrl("jdbc:derby://localhost:1527/Events Ticket Management");
crs.setUsername("x");
crs.setPassword("x");
UPDATE
放置INSERT
聲明中try-catch
塊之後,門票進入數據庫,但是現在更新崩潰,給人一種java.lang.NullPointerException
。
什麼是'crs' - 你可以在這個變量聲明的代碼中添加什麼?看起來你正在對'SELECT','INSERT'和'UPDATE'重新使用相同的'Statement',這可能會導致這個問題。 –
@MickMnemonic crs是一個CachedRowSet類型的變量。 – LoXatoR
@MickMnemonic另外,它的3AM在這裏。如果我在醒來後發佈代碼,可以嗎? – LoXatoR