作者adrianshum (Alien)
看板java
标题Re: [问题] 如何抓到刚存入资料库的那笔ID
时间Wed Sep 28 20:07:14 2011
※ 引述《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
1F:推 catjimmy:谢谢你们的指点,其实我只是在学习使用设计模式,还有mvc 09/28 22:22
2F:→ catjimmy:架构的练习,我知道有strut或是hibernate的工具 :) 09/28 22:25
3F:推 PsMonkey:DP 太难我不懂啦,可是弄个 DAO 不是基础的 pattern 吗? 09/29 06:59
4F:推 catjimmy:我有弄,只是因为这样程式码太多所以我把它简写了:) 09/29 09:45
5F:→ drsr0412:update_at这个栏位,如果是每次新增跟修改都会写入修改 09/30 23:42
6F:→ drsr0412:时间,用资料库查询捞直接SELECT MAX该栏位的最大值就好 09/30 23:45