Re: [問題] 如何抓到剛存入資料庫的那筆ID

看板java作者 (Alien)時間12年前 (2011/09/28 20:07), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串3/4 (看更多)
※ 引述《catjimmy (cat)》之銘言: : 因為想要寫個物件導向式的類別來做資料庫的存取 : 例如說 學生資料庫 students 在java的類別就叫做 student : 資料表有兩個欄位id(PK,AI) name(VARCHAR) : 我希望能做這樣的功能 : private static int id; : private static String name; : public student(String name){ : this.name = name; : // 在student資料庫新增一筆name欄位的資料 : PreparedStatement ps = conn.prepareStatement("INSERT INTO students : (name, : create_at, update_at) : VALUES : (?, : CURRENT_TIMESTAMP(), : CURRENT_TIMESTAMP())"); : ps.setString(1, name); : ps.excuteUpdate(); : } : 以上是新增一筆資料的部份,更新的部分雷同只是sql修改成update的語法因此不多 : 佔版面,希望是在這筆資料新增後能得到剛剛寫入或更新的這筆資料的id : 爬文跟自己做都想不出這邊要怎麼寫 : 想來請求一下指點 如何能得到剛剛新增/修改那筆資料的id呢? http://www.freshblurbs.com/jdbc-get-last-inserts-id 不過, 與其自己弄, 我建議你直接去用 Hibernate 等的 ORM tools, 你現在的做法, 一來把 persistence 的 logic 入侵 了 model, 二來設計上要顧及的東西太多了, 倒不如直接用人 家的 proven solution. 不然, 至少把 persistence 層弄個 DAO 吧. 犯不著一定要 create obj 就在 constructor 直接在 DB 生成 record... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.238.156.185

09/28 22:22, , 1F
謝謝你們的指點,其實我只是在學習使用設計模式,還有mvc
09/28 22:22, 1F

09/28 22:25, , 2F
架構的練習,我知道有strut或是hibernate的工具 :)
09/28 22:25, 2F

09/29 06:59, , 3F
DP 太難我不懂啦,可是弄個 DAO 不是基礎的 pattern 嗎?
09/29 06:59, 3F

09/29 09:45, , 4F
我有弄,只是因為這樣程式碼太多所以我把它簡寫了:)
09/29 09:45, 4F

09/30 23:42, , 5F
update_at這個欄位,如果是每次新增跟修改都會寫入修改
09/30 23:42, 5F

09/30 23:45, , 6F
時間,用資料庫查詢撈直接SELECT MAX該欄位的最大值就好
09/30 23:45, 6F
文章代碼(AID): #1EWmtqVj (java)
討論串 (同標題文章)
文章代碼(AID): #1EWmtqVj (java)