版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . 38/41 . . 客房信息管理系统概述 日期:数据库课程实训报告题目: 客房信息管理系统 目 录 TOC o 1-5 h z u HYPERLINK l _Toc485980294目录 PAGEREF _Toc485980294 h 2HYPERLINK l _Toc4859802951 课题容和要求 PAGEREF _Toc485980295 h 1HYPERLINK l _Toc4859802961.1课题描述 PAGEREF _Toc485980296 h 1HYPERLINK l _Toc4859802971.2 课题要求 PAGEREF _Toc485980297 h 1
2、HYPERLINK l _Toc4859802982 需求分析 PAGEREF _Toc485980298 h 1HYPERLINK l _Toc4859802992.1 功能需求分析 PAGEREF _Toc485980299 h 1HYPERLINK l _Toc4859803002.2 数据需求分析 PAGEREF _Toc485980300 h 1HYPERLINK l _Toc4859803013 系统设计 PAGEREF _Toc485980301 h 3HYPERLINK l _Toc4859803023.1 功能模块设计 PAGEREF _Toc485980302 h 3HYP
3、ERLINK l _Toc4859803033.2 数据库概念设计 PAGEREF _Toc485980303 h 3HYPERLINK l _Toc4859803043.3 数据库逻辑设计 PAGEREF _Toc485980304 h 5HYPERLINK l _Toc4859803053.4 数据库物理设计 PAGEREF _Toc485980305 h 5HYPERLINK l _Toc4859803063.5 数据库表间联系 PAGEREF _Toc485980306 h 7HYPERLINK l _Toc4859803074系统实现根据各自课题实际情况写,写清界面设计,包括哪些控件
4、,各自哪些属性,哪些事件,数据库如何相连与操作 PAGEREF _Toc485980307 h 7HYPERLINK l _Toc4859803084.1 登陆模块实现 PAGEREF _Toc485980308 h 7HYPERLINK l _Toc4859803094.2 登记模块实现 PAGEREF _Toc485980309 h 7HYPERLINK l _Toc4859803104.3 查询模块实现 PAGEREF _Toc485980310 h 8HYPERLINK l _Toc4859803115 代码调试与功能测试 PAGEREF _Toc485980311 h 8HYPERL
5、INK l _Toc4859803125.1 测试方案 PAGEREF _Toc485980312 h 8HYPERLINK l _Toc4859803135.2 测试结果 PAGEREF _Toc485980313 h 8HYPERLINK l _Toc4859803146 收获与体会 PAGEREF _Toc485980314 h 8HYPERLINK l _Toc485980315参考文献 PAGEREF _Toc485980315 h 9HYPERLINK l _Toc485980316附录 PAGEREF _Toc485980316 h 10HYPERLINK l _Toc48598
6、0317附录1源程序部分清单 PAGEREF _Toc485980317 h 10HYPERLINK l _Toc485980318附录1.1登陆代码 PAGEREF _Toc485980318 h 10HYPERLINK l _Toc485980319附录1.2 查询代码 PAGEREF _Toc485980319 h 12HYPERLINK l _Toc485980320附录1.3 计费代码 PAGEREF _Toc485980320 h 13客房信息管理系统设计1 课题容和要求1.1课题描述 随着市场经济的发展,各行各业为加强信息管理,提高经济效益,都迫切地将现代化信息处理技术应用到经济
7、管理中。客房管理系统是酒店、宾馆管理中必不可少的一部分,它不仅对管理者在运营过程中起到至关重要的作用,而且也能为用户提供充分的信息和快捷的查询手段。但是传统的人工操作管理存在着许多缺点,如:效率低、性差,而且保存时间一长,在查找、更新、维护文件和数据时都比较困难。这时就引入了客房信息管理系统,优点如下:检索迅速、查找方便、性高、成本低等。酒店在正常运营中需要对顾客信息、客房资源、结算情况进行管理,利用客房信息管理系统能更好地了解信息的变更,提高了管理效率。1.2 课题要求可以对客房基本信息进行增加、删除、修改客房分为三种类型:三人房、双人房、单人房,每种类型房间价位不同可以实现客户订房、退房、
8、续房功能可以登记、查询客户基本信息可以查询房间状态信息可以实现住宿计费2 需求分析2.1 功能需求分析(1)作为酒店客房信息管理系统,应该具有增加、删除、修改这几个基本功能。所需录入的表有客户基本信息表、房间资源信息表、密码表。(2)设计登陆后系统的主窗口,要求能够显示酒店管理信息。数据的增加、删除、修改、查询能直接放在桌面上供用户选择,而且要布局合理、美观。应当减少用户的键盘输入,减少用户的工作量,提高效率。2.2 数据需求分析图2-1表2-1 数据项说明表数据项名称含义说明类型长度客人编号惟一标识一位客人bigint10房间号惟一标识一间客房int 10入住时间标识入住时间datetime
9、10离开时间标识离店时间datetime10单价标识一间客房价格money10金额标识总金额money10房间等级标识房间类型smallint2 - 表2-2 数据流说明表数据流名称含义说明来源去处组成登陆管理员进入系统界面系统设置界面管理员端编号+密码查询已住房查询房间资料客人信息表统计界面客人信息表+客房编号表查询空房间查询空房间客房编号表统计界面客房编号表结算计算总金额系统设置界面管理员端系统设置界面登记、删除录入、删除住房信息管理员端系统设置界面系统数据库统计统计住房信息系统数据库统计界面系统数据库表2-3 数据存储说明表数据存储名称含义说明组成结构客户信息表存放客人相关信息个人信息+
10、入住时间+金额房间信息表存放客房的信息与状态客房信息+客房等级管理员信息表存放管理员验证信息编号+密码3 系统设计3.1 功能模块设计登陆系统系统主界面用户管理旅客信息管理客房情况查询客房信息管理经营管理图3-13.2 数据库概念设计备注房间价格房间类型房间位置客房信息管理房号图3-2真实XX名籍贯XX号手机号码旅客信息管理性别图3-3客房号入住编号证件号XX入住时间经营管理状态入住天数押金图3-4房间位置房间类型房号客房情况查询房间价格使用情况图3-4登录名用户真实XX主键排序码用户管理登录次数电子邮箱图3-5房间等级房间号单价证件号码性别XX入住时间年龄证件名称最大人数房间信息客户信息离开
11、时间房间号金额NN管理管理 11 管理员信息密码编号图3-63.3 数据库逻辑设计客户信息(客房编号,性别,年龄,证件,证件名称);房间信息(房间号,房间等级,单价,最大人数,金额,离开时间,入住时间);管理员信息(编号,密码);3.4 数据库物理设计1客户信息create table 客户信息(房间号 varchar(5) not null primary key, varchar(8) not null, 性别 char(2) not null, 年龄 char(5) not null, 证件 varchar(20)not null, 证件名称 varchar(10) not null);
12、 图3-62.房间信息create table 房间信息(房间号 varchar(10) not null primary key, 房间等级 varchar(10) not null, 单价 char(10) not null, 最大人数 char(10) not null, 金额 char(10) not null, 入住时间 char(10) not null, 离开时间 char(10) not null);图3-73.管理员信息create table 管理员信息(编号 varchar(10) not null primary key,密码 char(10)not null) ;图3
13、-83.5 数据库表间联系图3-9 数据库表间联系截图4系统实现 4.1 登陆模块实现Login类:登陆界面(用户名+密码),如果用户名和密码正确,则显示成功登陆本窗体连接到数据库中的管理员表通过定义ResultSet来调用表中的数据,相关代码:ResultSet rs;rs=stat.executeQuery(select * from 管理人员 where 编号=+tUser.getText()+and密码=+String.valueOf(password.getPassword()+);判断成功后实现主窗体中子菜单的setEnable()方法。4.2 登记模块实现Add类:方便管理人员添
14、加新的客人信息,包括编号、性别、年龄、家庭地址、来自、客房名、工作单位、预入住时间、入住时间、离开时间、押金本窗体主要用到T-SQL语句中的insert into. VALUES语句,相关代码:a1=+tName.getText().trim()+;a2=+tSex.getText().trim()+;a3=+tAge.getText().trim()+;a4=+tIdentication.getText().trim()+;a5=+tAddress.getText().trim()+;a6=+tWorkPlace.getText().trim()+;a7=+tFrom.getText().t
15、rim()+;a8=+tRoomNo.getText().trim()+;a9=+tWillIn.getText().trim()+;a10=+tIn.getText().trim()+;a11=+tLeave.getText().trim()+;int i = Integer.valueOf(tCash.getText().intValue();String b=insert into 客人信息 (客房编号,性别,年龄,家庭住址,工作单位,来自地的地名,预定入住时间,入住时间,离店时间,押金) VALUES (+a8+,+a1+,+a2+,+a3+,+a4+,+a5+,+a6+,+a7+,+
16、a9+,+a10+,+a11+,+i+);stat=conn.prepareStatement(b);r=stat.executeUpdate();4.3 查询模块实现SearchForName类:可以需要查询客人的信息本窗体主要用到JTable和连接客人信息表,相关代码:stat=conn.createStatement();rs=stat.executeQuery(select ,性别,工作单位,客房编号,入住时间 from 客人信息 where =+tName.getText()+);rs=stat.executeQuery(select ,性别,工作单位,客房编号,入住时间 from
17、客人信息 where 客房编号=+tName.getText()+);5 代码调试与功能测试5.1 测试方案系统测试是一个系统必须经历的过程,一个系统想要能满足用户需求,就必须经过一套科学的、完善的测试。对于本系统,我做了以下几方面的测试:(1)数据合法性测试。这是对输入的数据是否合法的一个测试。(2)数据一致性测试。在这个测试的过程中,我对数据进行了添加、删除、修改的操作,观察界面上显示的数据是否与操作的容相一致。(3)功能模块测试。这个测试是对各个模块是否能正常运行的一个测试。5.2 测试结果图5-1图5-2图5-3图5-4图5-5图5-6图5-76 收获与体会 时间过的好快,两个星期的实
18、训终于告一段落。这学期做的是数据库实验,老师很负责任,第一节课就把大家要做的任务分配好,并且每一步应该做什么都很详细地讲解。但是尽管这样,当我自己开始做报告的时候,看到密密麻麻的步骤,我还是有点慌,怕自己完成不好。问身边的同学,大家都有自己的任务,不能给予帮助,所以还是得靠自己。于是慢慢静下心来,按照老师给的目录一步步做,不理解的,多读几遍要求,总能搞懂。在键盘上一个字一个字地打出来的感觉很踏实,因为是自己的成果。在做SQL的时候,问题倒不是很大,书上都有概念知识,不会的步骤看书上就能很快的解决。而且我发现平时都在学理论,但是到实践的时候很多东西还是要自己摸索的,就像我上面要在SQL中建表,程
19、序中已经标注要显示主键,但是执行后表里一直都没有出现那把小钥匙,我操作了很久,最后才发现,只要在表上直接设置就行,绕了好大一个弯,但是心里真的很开心。在JAVA部分就有点头疼了,对我来说这就是一个庞大的程序,不知道从何处下手,所以我想到了合作,找到一个和我做同样项目的同学,一起探讨、磨合,程序最后也成型了,喜悦可想而知!这次实验后,我深刻地意识到实践的重要性,平时老师说的再多,书看的再多,没动手就什么都不是。在实践过程中会遇到困难想放弃,但是每次都坚持下来了,现在看看之前的两周其实都不算什么。只要认真踏实地一步步完成,不懂地自己摸索,有错误不要紧,只要不放弃,总会有解决的那天。还有让我收获的就
20、是合作。当然这是建立在互惠互利的基础上的。一个人蒙头做,很容易走进死胡同,思维也变得狭隘,而且还会有挫败感。可是合作了就不一样了,大家都把自己的观点说出来,很容易就会发现自己之前的不足在哪里了,然后加以改进。合作的好处还有就是思考问题会更全面,可以说这是一件效率很高的事情,我也乐在其中!参考文献1钱雪忠,王燕玲,林挺.数据库原理与技术M.:清华大学,2011.2 钱雪忠,罗海驰,国俊.数据库原理与技术课程设计M.:清华大学,2014.附录附录1源程序部分清单附录1 源程序部分清单附录1.1 登录代码package .plat.frame;import java.awt.event.Action
21、Event;import java.awt.event.ActionListener;import java.sql.Date;import java.text.ParseException;import java.text.SimpleDateFormat;import javax.swing.utton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JTextField;import .plat.db.UtilHepler;impo
22、rt .plat.db.today;import .plat.model.checkInfo;import .plat.model.customerInfo;import .plat.model.roomBase;import .plat.service.checkService;import .plat.service.customerService;import .plat.service.roomBaseService;import .plat.view.AppMainFrame;import .plat.view.swing.MainPanel;public class AddChec
23、kDialog extends JDialog private static AddCheckDialog editdialog;private JTextField j1, j2, j3, j4, j5, j6, j7, j8;private JLabel jr1, jr2;private utton ensure, cancel;private boolean isedit;public static AddCheckDialog instance(String text) if (editdialog != null)editdialog.dispose();editdialog = n
24、ew AddCheckDialog(text);return editdialog;public AddCheckDialog(String text) super(AppMainFrame.instance(), text + 旅客, true);setLayout(null);setSize(420, 400);setLocationRelativeTo(null);editdialog = this;j1 = new JTextField();j2 = new JTextField();j3 = new JTextField();j4 = new JTextField();j5 = ne
25、w JTextField();j6 = new JTextField();j7 = new JTextField();j8 = new JTextField();/ JLabel j11 = new JLabel(入住编号:);JLabel j21 = new JLabel(证件号:);JLabel j31 = new JLabel(客房号:);JLabel j41 = new JLabel(入住时间:);JLabel j51 = new JLabel(入住天数:);JLabel j61 = new JLabel(押金);jr1 = new JLabel(续房天数:);jr2 = new JL
26、abel(续房时间:);JLabel jlbto = new JLabel();ensure = new utton(确定);cancel = new utton(取消);/ j11.setBounds(60, 30, 85, 30);j21.setBounds(60, 60, 85, 30);j31.setBounds(60, 90, 85, 30);j41.setBounds(60, 120, 85, 30);j51.setBounds(60, 150, 85, 30);j61.setBounds(60, 180, 85, 30);jr1.setBounds(60, 210, 85, 30
27、);jr2.setBounds(60, 240, 85, 30);/ j1.setBounds(130, 30, 190, 30);j2.setBounds(130, 60, 190, 30);j3.setBounds(130, 90, 190, 30);j4.setBounds(130, 120, 190, 30);j5.setBounds(130, 150, 190, 30);j6.setBounds(130, 180, 190, 30);j7.setBounds(130, 210, 190, 30);j8.setBounds(130, 240, 190, 30);jlbto.setBou
28、nds(210, 86, 30, 40);ensure.setBounds(115, 260, 70, 40);cancel.setBounds(210, 260, 70, 40);/ add(j1);add(j2);add(j3);add(j4);add(j5);add(j6);add(j7);add(j8);add(jr1);add(jr2);add(j21);add(j31);add(j41);add(j51);add(j61);add(ensure);add(cancel);if (text = 入住登记) this.isedit = false; else this.isedit =
29、 true;cancel.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubAddCheckDialog.instance().dispose(););ensure.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) if (isedit = true) / 编辑String
30、 jString = j7.getText();if (!UtilHepler.isNumeric(jString) JOptionPane.showMessageDialog(null, 天数必须是一个数字!);return;if (jString.equals() JOptionPane.showMessageDialog(null, 天数不能为空!);return;/checkInfo entity = getInfo();/if (entity = null)/return;checkInfo entity=new checkInfo();entity.setCheckId(Integ
31、er.parseInt(j1.getText();entity.setContinuedDay(Integer.parseInt(jString);entity.setStatus(1);/SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss );java.util.Date date = UtilHepler.StrToDate(j8.getText();entity.setContinuedTime(date);checkService service = new checkService();service.upd
32、ateCont(entity);Callback(续房成功!); else checkInfo entity = getInfo();if (entity = null)return;checkService service = new checkService();customerService customerService = new customerService();/ 新增时验证是否存在!customerInfo r = customerService.getEntityById(customerId, entity.getCustomerId() + );if (r = null
33、) JOptionPane.showMessageDialog(null, 该不存在,请先添加旅客个人基本信息!);return;roomBaseService roomBaseService = new roomBaseService();roomBase roomBase = roomBaseService.getEntityByValue(roomId, entity.getRoomId() + );if (roomBase = null) JOptionPane.showMessageDialog(null, 该房间号不存在!你想去此此房间?);return;if (roomBase.
34、getRoomStatus() = 1) JOptionPane.showMessageDialog(null, 该房间已有人住了!);return;service.insert(entity);Callback(订房间成功 ,你的房间号为: + entity.getRoomId() + 位置在: + roomBase.getPoisition(););public void open(checkInfo entity) if (entity = null) this.isedit = false;j1.setVisible(false);jr1.setVisible(false);jr2.s
35、etVisible(false);j7.setVisible(false);j8.setVisible(false);j1.setText(0 + );/ j1.setEditable(false);j4.setText(today.getDate() + + today.getTime();j4.setEditable(false); else System.out.println(编辑checkid: + entity.getCheckId();j1.setText(entity.getCheckId() + );/ j1.setEditable(false);j2.setText(ent
36、ity.getCustomerId();j3.setText(entity.getRoomId() + );j4.setText(entity.getCheckInTime() + );j5.setText(entity.getCheckInDay() + );j6.setText(entity.getDepositmoney() + );j2.setEditable(false);j3.setEditable(false);j4.setEditable(false);j5.setEditable(false);j6.setEditable(false);j8.setText(today.ge
37、tDate() + + today.getTime();j8.setEditable(false);j7.setText(entity.getContinuedDay()+);ensure.setBounds(115, 300, 70, 40);cancel.setBounds(210, 300, 70, 40);this.isedit = true;setVisible(true);private checkInfo getInfo() if (j2.getText().equals() | j3.getText().equals() | j4.getText().equals() | j5
38、.getText().equals()| j6.getText().equals() JOptionPane.showMessageDialog(null, 你还有一些数据没有填!);return null;if (!UtilHepler.isNumeric(j5.getText() JOptionPane.showMessageDialog(null, 入住天数必须是数字!);return null;if (!UtilHepler.isNumeric(j6.getText() JOptionPane.showMessageDialog(null, 押金必须是数字!);return null;
39、String customerId, roomId;int checkId = Integer.parseInt(j1.getText();customerId = j2.getText();roomId = j3.getText();System.out.println(j4.getText();SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss );java.util.Date date = UtilHepler.StrToDate(j4.getText();System.out.println(date.getT
40、ime();int checkInDay = Integer.parseInt(j5.getText();double depositmoney = Double.parseDouble(j6.getText();return new checkInfo(checkId, customerId, roomId, date, checkInDay, depositmoney);private void Callback(String text) AddCheckDialog.instance().dispose();MainPanel.instance().refresh();JOptionPa
41、ne.showMessageDialog(null, text);附录1.2 查询代码 package .plat.db;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect.Type;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;impor
42、t java.sql.SQLException;import java.sql.Statement;import java.sql.Types;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import .plat.model.sysUser;/* * 注意利用查询出数据库的一条记录映射到相应的dao中,写相应的dao一定要注意字段,一定 * 要与数据库的记录字段相对应,大小写可以忽略,但是字段不一致就返回错误的数据 * * private stati
43、c Object getValueFromRs(ResultSet rs, String fieldName, Type t) throws SQLException * 此接口有个小的问题就是如果,获取的字段值是空值或者为null,而你自己的需求就是想要获取的字段为一个 * 默认的值,那就只需要客户该写这个方法,进行判断就可以 * author Administrator * */public class DBUtil /* * 对操作的数据库回滚 * param con 对数据库操作所得到的 */public static void rollBack(Connection con)try
44、con.rollback(); catch (SQLException e) e.printStackTrace();/* * * param con 数据库jdbc * param sql 执行的sql语句 * return 返回查询的记录数,记录存储在集合List里面, * 里面的元素是集合Map,key是数据库中的字段类型,value是 * 字段类型对应的值 * throws SQLException */public static ListMap executeQuery(Connection con, String sql) throws SQLExceptionPreparedSt
45、atement pst = null;ResultSet rs = null;try pst = con.prepareStatement(sql);rs = pst.executeQuery();return getListFromRs(rs);finallycloseRs(rs);closePst(pst);/* * 执行sql语句,把结果集存放到List集合里,集合的元素是dao对象 * param con 数据库得到的 * param sql 执行查询的sql语句 * param c 把一条条记录要映射的dao类中的对象中去 * return * throws SQLException
46、 */public static List executeQuery(Connection con, String sql, Class c) throws SQLExceptionPreparedStatement pst = null;ResultSet rs = null;try pst = con.prepareStatement(sql);rs = pst.executeQuery();return getListFromRs(rs, c);finallycloseRs(rs);closePst(pst);/* * 得到结果集存储到list中 * param rs 查询的结果集 *
47、return * throws SQLException */public static ListMap getListFromRs(ResultSet rs) throws SQLExceptionResultSetMetaData md = rs.getMetaData();/得到结果集列的属性int columns = md.getColumnCount();/得到记录有多少列int i;ListMap list = new ArrayListMap();while(rs.next()Map map = new HashMap();for(i = 0; i columns; i+)map
48、.put(md.getColumnName(i + 1), getValueByType(rs, md.getColumnType(i + 1), md.getColumnName(i + 1);list.add(map);return list;/* * * param rs 查询的结果集 * param c 集合元素存放的dao对象 * return * throws SQLException */public static List getListFromRs(ResultSet rs, Class c) throws SQLExceptionList list = new ArrayL
49、ist();try while(rs.next()Object o = initObjectFromRsIfExist(rs, c);list.add(o); catch (IllegalAccessException e) e.printStackTrace(); catch (InstantiationException e) e.printStackTrace();return list;/* * * param rs 查询的结果集 * param c 结果集一条记录,而一条记录所对应的dao类 * return * throws SQLException */public static
50、 Object getFirstObjectFromRs(ResultSet rs, Class c) throws SQLExceptionObject o = null;try o = initObjectFromRsIfExist(rs, c); catch (InstantiationException e) e.printStackTrace(); catch (IllegalAccessException e) e.printStackTrace();return o;/* * * param rs 查询出来的结果集 * param type SQL type from java.
51、sql.Types * param name 数据库记录所对应的字段名称 * return 返回一条记录的一个列值 * throws SQLException */private static Object getValueByType(ResultSet rs, int type, String name) throws SQLExceptionswitch(type)case Types.NUMERIC:return rs.getLong(name);case Types.VARCHAR:if(rs.getString(name)=null)return ;return rs.getStr
52、ing(name);case Types.DATE:if(rs.getDate(name)=null)return System.currentTimeMillis();return rs.getDate(name);case Types.TIMESTAMP:if(rs.getTimestamp(name)=null)return System.currentTimeMillis();return rs.getTimestamp(name).toString().substring(0,rs.getTimestamp(name).toString().length()-2);case Type
53、s.INTEGER:return rs.getInt(name);case Types.DOUBLE:return rs.getDouble(name);case Types.FLOAT:return rs.getFloat(name);case Types.BIGINT:return rs.getLong(name);default:return rs.getObject(name);/* * 查询dao映射的字段是否在记录在数据库包含的字段 * param rs 查询的记录集 * param fieldName dao映射的字段 * return 如果包含在数据库记录集里面,返回true,
54、否则false * throws SQLException */private static boolean rsContainsFields(ResultSet rs, String fieldName) throws SQLExceptionResultSetMetaData md = rs.getMetaData();for(int i = 0; i md.getColumnCount(); i+)if(md.getColumnName(i + 1).equalsIgnoreCase(fieldName)return true;return false;/* * 这个函数与initObj
55、ectFromRsIfExist函数实现的功能是一样,只是 * 没有判断dao中的字段是否与数据库记录所定义的字段是一样的, * 没有判断时如果自己设置的dao字段与数据库的字段不一致就会报异常 * param rs * param c * return * throws InstantiationException * throws SQLException * throws IllegalAccessException */private static Object initObjectFromRs(ResultSet rs, Class c) throws InstantiationEx
56、ception, SQLException, IllegalAccessExceptionObject o = c.newInstance();Method methods = o.getClass().getMethods();for(Method m: methods)if(m.getName().startsWith(set)try m.invoke(o, getParamValueFromRs(rs, m); catch (IllegalArgumentException e) throw new RuntimeException(IllegalArgumentException: +
57、 e + nMethods: + m.getName(); catch (InvocationTargetException e) throw new RuntimeException(InvocationTargetException: + e + nMethods: + m.getName();return o;/* * * 把数据库的一条记录映射到相应的dao对象中, * 如果dao中的字段与数据库字段不一致,返回的就是dao数据类型定义的默认值 * 如:dao的字段long vehicleID;而数据库的字段是vehicle_id,那么返回的 * 就定义的默认值0. * param r
58、s 查询的结果集 * param c 结果集一条记录,而一条记录所对应的dao类 * return * throws SQLException * throws IllegalAccessException * throws InstantiationException */private static Object initObjectFromRsIfExist(ResultSet rs, Class c) throws SQLException, IllegalAccessException, InstantiationExceptionObject o = c.newInstance()
59、;/一条记录的dao,新建对象Method methods = o.getClass().getMethods();/dao对象所有的方法String field;for(Method m: methods)/得到dao字段,如getRegdate,转换成Regdatefield = m.getName().substring(3);/查询dao映射的字段是否在记录在数据库包含的字段,dao方法对set开头的方法进行处理/因为要将结果集映射到dao里面if(m.getName().startsWith(set) & rsContainsFields(rs, field)try m.invoke
60、(o, getParamValueFromRs(rs, m); catch (IllegalArgumentException e) throw new RuntimeException(IllegalArgumentException: + e + nMethods: + m.getName(); catch (InvocationTargetException e) throw new RuntimeException(InvocationTargetException: + e + nMethods: + m.getName();return o;/* * * param rs 查询的结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年上海市精神卫生中心分部医护人员招聘笔试备考题库及答案详解
- 2026年南京市市级机关医院医护人员招聘笔试备考试题及答案详解
- 2026年连云港市第一人民医院医护人员招聘笔试备考题库及答案详解
- 2026年横县妇幼保健院医护人员招聘笔试备考题库及答案详解
- Unit 4 Customs and Traditions Vocabulary Focus Grammar in Use 教学设计 -高中英语上外版必修第一册
- 2026年无人机航拍测绘师初级笔试模拟题
- 2026年安全教育基础知识
- 2026年皮影雕刻师认证考试备考冲刺资料
- 2026年植物保护知识综合
- 2025甘肃兰州高新技术产业开发区招聘53人笔试变更及笔试历年参考题库附带答案详解
- 2026年宗教教职人员管理知识试题
- Unit6CoolclothesGetreadyStartup(课件)-外研版英语四年级下册
- 2026中考道法万能答题模版
- 2025年湖南省高中学业水平合格性考试英语卷试题(含答案)
- 医院样本外送检测管理制度
- 院前急救与院内救治应急演练方案(绕急诊)
- “十五五规划纲要”解读:文化产业高质量发展
- 天狗郭沫若赏析课件
- 医疗器械经营企业质量管理体系文件(2025版)(全套)
- JJG1036-2022天平检定规程
- 灰库清灰作业安全施工方案
评论
0/150
提交评论