我创建了一个简单的应用程序,允许用户购买门票。但是,每当我尝试购买“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