java web程序设计任务教程补充案例第9章jdbc_第1页
java web程序设计任务教程补充案例第9章jdbc_第2页
java web程序设计任务教程补充案例第9章jdbc_第3页
java web程序设计任务教程补充案例第9章jdbc_第4页
java web程序设计任务教程补充案例第9章jdbc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 9 章 补充案例案例 9-1使用 JDBC 完成数据的增删改查一、案例描述1、 考核知识点名称:使用 JDBC 完成数据的增删改查:0280090062、 练习目标掌握 JDBC 常用接口的使用掌握 PreparedSement 对象的使用掌握 ResultSet 对象的使用3、 需求分析Sement 对象每次执行SQL 语句时,都会对其进行编译。当相同的SQL 语句执行多次时,Sement对象就会使数据库频繁编译相同的 SQL 语句,从而降低数据库的效率。为了解决这个问题,Sement 提供了一个子类 PreparedSement。PreparedSement 对象可以对 SQL 语句进

2、行预编译,预编译的信息会在 PreparedSement 对象中。当相同的 SQL 语句再次执行时,程序会使用PreparedSement 对象中的数据,而不需要对 SQL 语句再次编译去查询数据库,这样就大大的提高了数据的效率。接下来,本案例将使用 PreparedSement 对象来完成对数据的增删改查操作。4、 设计思路(实现原理)1)2)3)4)5)创建一个用于封装数据的 JavaBean。将加载驱动和获取数据连接等操作封装在一个工具类中,以供其他类调用。创建一个实现了对数据库添删改查操作的分别创建用于执行对数据表添删改查操作的测试类。执行程序,。二、案例实现1创建 JavaBean创

3、建一个用于保存用户数据的 User 类,User 类的具体实现方式如下所示。import java.util.Date; public claser privateid;private String username; private String password; private String; private Date birthday;/此处省略各属性的getter/setter 方法2创建工具类由于每次操作数据库时,都需要加载数据库驱动、建立数据库连接以及关闭数据库连接,为了避免代码的重复书写,下面建立一个专门用于数据库相关操作的工具类 JDBCUtils,JDBCUtils 的具体

4、实现方式如下所示。import java.sql.*; public class JDBCUtils / 加载驱动,并建立数据库连接public sic Connection getConnection() throws SQLException, ClaotFoundException Class.forName(com.jdbc.Driver);String url = jdbc:/localhost:3306/jdbc; String username = root;String password = ;Connection conn = DriverManager.getConnect

5、ion(url, username, password); return conn;/ 关闭数据库连接,资源public sic void release(PreparedSement prestmt, Connection conn, ResultSet rs) if (prestmt != null) try prestmt.close(); catch (SQLException e) e.prStackTrace();prestmt = null;if (conn != null) try conn.close(); catch (SQLException e) e.prStackTr

6、ace();conn = null;if (rs != null) try rs.close(); catch (SQLException e) e.prStackTrace();rs = null;3创建创建一个名称为 Users现方式如下所示。的类,该类中封装了对表 users 的添加、查询、删除和更新等操作,具体实import java.sql.*;import java.text.SimpleDateFormat; import java.util.ArrayList;public clasers/ 添加用户的操作publicinsert(User user) Connection c

7、onn = null;PreparedSement prestmt = null; ResultSet rs = null;try / 获得数据的连接conn = JDBCUtils.getConnection();/ 发送SQL 语句SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd); String birthday = sdf.format(user.getBirthday();String sql = INSERTO users(id,name,password,birthday) + VALUES( + user.getId(

8、) + , + user.getUsername()+ , + user.getPassword() + , + user.get()+ , + birthday + ); prestmt = conn.prepareSement(sql);num = prestmt.executeUpdate(); if (num 0) return true;return false; catch (Exception e) e.prStackTrace(); finally JDBCUtils.release(prestmt, conn, rs);return false;/ 查询所有的User 对象p

9、ublic ArrayList findAll() Connection conn = null;PreparedSement prestmt = null; ResultSet rs = null;ArrayList list = new ArrayList(); try / 获得数据的连接conn = JDBCUtils.getConnection();/ 发送SQL 语句String sql = SELECT * FROM users;prestmt = conn.prepareSement(sql);rs = prestmt.executeQuery();/ 处理结果集while (r

10、s.next() User user = new User();user.setId(rs.get(id);user.setUsername(rs.getString(name);user.setPassword(rs.getString(password);user.set(rs.getString();user.setBirthday(rs.getDate(birthday);list.add(user);return list; catch (Exception e) e.prStackTrace(); finally JDBCUtils.release(prestmt, conn, r

11、s);return null;/ 根据id 查找指定的user public User find(id) Connection conn = null;PreparedSement prestmt = null; ResultSet rs = null;try / 获得数据的连接conn = JDBCUtils.getConnection();/ 发送SQL 语句String sql = SELECT * FROM users WHEREid= + id;prestmt = conn.prepareSement(sql);rs = prestmt.executeQuery();/ 处理结果集w

12、hile (rs.next() User user = new User();user.setId(rs.get(id);user.setUsername(rs.getString(name);user.setPassword(rs.getString(password);user.set(rs.getString();user.setBirthday(rs.getDate(birthday);return user;return null; catch (Exception e) e.prStackTrace(); finally JDBCUtils.release(prestmt, con

13、n, rs);return null;/ 删除用户publicConnection PreparedSdelete(id) conn = null;ement prestmt = null;ResultSet rs = null; try / 获得数据的连接conn = JDBCUtils.getConnection();/ 发送SQL 语句String sql = DELETE FROM users WHEREid=+id;prestmtnum if (num=conn.prepareSement(sql);prestmt.executeUpdate();0) return true;ret

14、urn false; catch (Exception e) e.prStackTrace(); finally JDBCUtils.release(prestmt, conn, rs);return false;/ 修改用户publicConnection PreparedSupdate(User user) conn = null;ement prestmt = null;ResultSet rs = null; try / 获得数据的连接conn = JDBCUtils.getConnection();/ 发送SQL 语句SimpleDateFormat sdf = new Simple

15、DateFormat(yyyy-MM-dd); String birthday = sdf.format(user.getBirthday();String sql = UPDATE users set name= + user.getUsername()4创建测试类(1)编写测试类 JdbcInsertTest,实现向 users 表中添加一条数据,其代码如下所示。在运行程序之前,先来查询下 users 表中的数据,如下图所示。import java.util.Date; public class InsertUserTestpublic sic void main(String args)

16、 / 向users 表一个用户信息 Usersud = new Users(); User user=new User();user.setId(5); user.setUsername(hym); user.setPassword(1234); user.set(); user.setBirthday(new Date();b=ud.insert(user); System.out.prln(b);+ ,password= + user.getPassword() + ,=+ user.get() + ,birthday= + birthday+ WHERE id= + user.getId

17、(); prestmt = conn.prepareSement(sql);num = prestmt.executeUpdate(); if (num 0) return true;return false; catch (Exception e) e.prStackTrace(); finally JDBCUtils.release(prestmt, conn, rs);return false;运行程序后,如果控制台的打印结果为 true,说明添加用户信息的操作执行成功了。这时,再次查询users 表,其查询结果如下图所示:图9-1查询结果从上图的查询结果可以看出,users 表中添加了

18、一条 name 为 hym 的数据。(2)编写测试类 FindAllUsersTest,该类用于实现users 表中所有的数据,其代码如下所示。程序执行后,控制台会打印出 users 表中所有的 username 值,结果如下图所示。(3)编写测试类 FindUserByIdTest,该类实现了users 表中指定的数据,其代码如下所示。程序执行后,控制台会将 id 为 5 的User 对象的 name 值打印出来,结果如下图所示。public class FindUserByIdTestpublic sic void main(String args) Usersusers= new Use

19、rs();User user = users.find(5);System.out.prln(id 为 5 的User 对象的name 值为:+user.getUsername();import java.util.ArrayList; public class FindAllUsersTest public sic void main(String args) / 创建一个名称为users的对象Usersusers= new Users();/ 将Users对象的findAll()方法执行后的结果放入list 集合ArrayList list = users.findAll();/ 循环输出

20、集合中的数据for (i = 0; i list.size(); i+) System.out.prln(第 + (i + 1) + 条数据的 username 值为:+ list.get(i).getUsername();图9-2运行结果(4)编写测试类 UpdateUserTest,该类实现了修改 users 表中数据的操作,具体代码如下所示。执行上传程序后,如果控制台打印结果为 true,说明已经执行了修改用户信息的操作,这时,再查看users 表,查询结果如下图所示:从上图的查询结果可以看出,id 为 5 的 User 对象的信息已经发生了变化。(5)编写测试类 DeleteUserTest,该类实现了删除 users 表中数据的操作,其代码如下所示。public class DeleteUserTestpublic sic void main(String args) / 删除操作Usersusers= new Users(); b = use

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论