iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
自我挑戰組

飲食營養追蹤 + 健康分析 Web 系統系列 第 9

改良功能(程式碼)

  • 分享至 

  • xImage
  •  

目的

讓資料庫看起來簡潔、不複雜。
同一天、同一食物可以累加份量。

1.class FoodLog
把有log_id的地方刪掉
https://ithelp.ithome.com.tw/upload/images/20251012/20178845brY489pQJB.jpg
https://ithelp.ithome.com.tw/upload/images/20251012/20178845OToWw6eRUv.jpg


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。
最後把結果寫出
https://ithelp.ithome.com.tw/upload/images/20251012/201788455fjYnnWMz4.jpg

如果沒有重複的使用者、食物、日期就新增新的
INSERT INTO food_log (id,food_id,date,quantity) VALUES(?,?,?,?):準備在資料表插入值。
把四個值放入並寫出來。
https://ithelp.ithome.com.tw/upload/images/20251012/20178845uAjunJeDjo.jpg


查詢記錄:
在設定物件FoodLog log = new FoodLog那把log_id刪掉。
https://ithelp.ithome.com.tw/upload/images/20251012/20178845xtl9r5Qd8i.jpg


刪除記錄:
deleteFoodLog(int userId,int foodId,String date):原本()裡是放log_id,要改為合成主鍵,下面也是一樣。
https://ithelp.ithome.com.tw/upload/images/20251012/20178845h3TUKONecU.jpg


新增記錄:
updateFoodLog(int userId, int foodId,String date,double newQuantity):把log_id改為userId,foodId,date再加上一個newQuantity。
後面也是改掉
https://ithelp.ithome.com.tw/upload/images/20251012/20178845NygZEyYNhv.jpg


3.執行結果
https://ithelp.ithome.com.tw/upload/images/20251012/201788450dEznFgcWE.jpg


上一篇
改良功能(資料庫)
下一篇
改成Console互動版,測試新增與查詢功能
系列文
飲食營養追蹤 + 健康分析 Web 系統16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言