目的
讓資料庫看起來簡潔、不複雜。
同一天、同一食物可以累加份量。
1.class FoodLog
把有log_id的地方刪掉
2.class FoodLogDAO
新增食物記錄:
SELECT quantity FROM food_log WHERE id=? AND food_id =?AND date=?:先查某使用者在某天是否已經吃過某食物,WHERE後面接的是我設定的合成主鍵,三個都要寫。
checkStmt = conn.prepareStatement(checkSql):會回傳一個準備好的語句物件。
checkStmt.setString(1,userId):將第一個?設為userId且為整數。
if(rs.next):一筆一筆查有沒有符合的資料,rs是上面執行的結果。
double oldQuantity = rs.getDouble("quantity"):從結果中取出欄位quantity的值,存入olaQuantity。
double newQuantity = oldQuantity +quantity:舊的份量加新吃的份量。
UPDATE food_log SET quantity = ? WHERE id =? AND food_id=? AND date=?:更新指定使用者、食物、日期的份量。
updateStmt.setDouble(1,newQuantity):將第一個?設為newQuantity。
最後把結果寫出
如果沒有重複的使用者、食物、日期就新增新的
INSERT INTO food_log (id,food_id,date,quantity) VALUES(?,?,?,?):準備在資料表插入值。
把四個值放入並寫出來。
查詢記錄:
在設定物件FoodLog log = new FoodLog那把log_id刪掉。
刪除記錄:
deleteFoodLog(int userId,int foodId,String date):原本()裡是放log_id,要改為合成主鍵,下面也是一樣。
新增記錄:
updateFoodLog(int userId, int foodId,String date,double newQuantity):把log_id改為userId,foodId,date再加上一個newQuantity。
後面也是改掉
3.執行結果