[英]Before start of result set running multiple sql
我目前正在為餐廳申請。 我當前正在使用的代碼的想法是,它從組合框中獲取名稱,並將收據插入數據庫中,其中包含正在處理該代碼的人員的雇員編號。 我正在嘗試的代碼是:
RestaurantOrder sqlRestaurantOrder = new RestaurantOrder();
ActionListener printReceiptListner;
printReceiptListner = (ActionEvent) -> {
int ID = Integer.parseInt(input1.getText());
try {
SystemManager manager = new SystemManager();
ResultSet rs = manager.stmt.executeQuery(sqlRestaurantOrder.setIdSql(ID));
while (rs.next()) {
double totalPrice = rs.getDouble("sumprice");
if (ID > 0) {
Receipt receiptSql = new Receipt();
String firstName = (String) cb.getSelectedItem();
String checkoutDate = new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime());
ResultSet rs2 = manager.stmt.executeQuery(receiptSql.getEmployeeId(firstName));
int employeeId = rs2.getInt("id");
while (rs2.next()) {
Receipt receiptSql2 = new Receipt();
ResultSet rs3 = manager.stmt.executeQuery(receiptSql2.SetStatusReceipt(employeeId, checkoutDate, ID, totalPrice));
while (rs3.next()) {
}
}
}
}
} catch (SQLException k) {
JOptionPane.showMessageDialog(null, k.getMessage());
}
};
這些語句是:
public class Receipt {
public String sql;
public String sql2;
public String getEmployeeId(String firstName){
return sql2 = "SELECT id FROM employee WHERE firstName = '" + firstName + "';";
}
public String SetStatusReceipt(int employeeId, String checkoutDate, int id, double totalPrice){
return sql = "INSERT INTO `receipt` (`employeeId`, `price`, `restaurantOrderId`, `checkoutDate`) VALUES (" + employeeId + " , " + totalPrice + ", " + id + ", " + checkoutDate + ");";
};
}
我在開始結果集之前就收到了錯誤消息,我查了一下意思是什么,但目前無法解決。 幫助將不勝感激。
如果我忘記發布更重要的代碼,請告訴我,我將對其進行更新
您必須先調用ResultSet.next()
才能訪問該ResultSet
的字段。 因此,您需要將對employeeId
的分配移動到while
循環中:
while (rs2.next()) {
int employeeId = rs2.getInt("id");
從ResultSet.next()
的文檔中:
ResultSet
游標最初位於第一行之前; 第一個對方法的調用next
使第一行成為當前行; 第二個調用使第二行成為當前行,依此類推。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.