在Eclipse中测试MySQL-JDBC(6)JDBC工具(JdbcUtil)类抽取

来源:互联网 发布:mysql数据库教学视频 编辑:程序博客网 时间:2024/05/01 14:13

【0  员工类:Employee.java】由于工具类中有使用

package com.flying.jdbc;public class Employee {private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Employee [id=" + id + ", name=" + name + ", age=" + age + "]";}}


【1 抽取的工具类JdbcUtils.java】
package com.flying.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class JdbcUtils {// 数据库驱动只需要加载一次// static静态代码块在类加载的时候会执行,并且只执行一次static{try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}}// 对外提供获取连接的方法// 异常可以直接抛出,因为在调用该方法处还会执行try-catch.public static Connection getConnection() throws SQLException {String url = "jdbc.mysql://127.0.0.1:3306/jdbcDemo?characterEncoding=utf-8";String user = "root";String password = "root";Connection con = DriverManager.getConnection(url, user, password);return con;}//释放资源方法2 其他增删改释放资源public static void release(Connection con, Statement st) {//注意:释放资源是有先后顺序的if (st != null) {try {st.close();} catch (SQLException e) {e.printStackTrace();}}if (con != null) {try {con.close();} catch (SQLException e) {e.printStackTrace();}}}//释放资源方法1 查询的时候释放资源public static void release(Connection con, Statement st, ResultSet res) {//注意:释放资源是有先后顺序的if (res!=null) {try {res.close();} catch (SQLException e) {e.printStackTrace();}}if (st !=null) {try {st.close();} catch (SQLException e) {e.printStackTrace();}}if (con != null) {try {con.close();} catch (SQLException e) {e.printStackTrace();}}}}


注意:在释放资源的时候,如果没有使用到ResultSet结果集,那么也可以使用:

JdbcUtils.release(con, st, null);

但是这样写不符合编程规范,并且如果在其他人调用该方法的时候,就会对于方法中为什么要传递一个null存在疑惑,因此可以编写一个重载的方法来进行区分。



【2 工具类的测试类UtilstDemoTest.java】

package com.flying.jdbc;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import org.junit.Test;public class UtilstDemoTest {@Testpublic void chaxun(){Connection con = null;Statement st = null;ResultSet res = null;try {con=JdbcUtils.getConnection();String sql = "select * from employee";st = con.createStatement();res = st.executeQuery(sql);List list = new ArrayList();//处理结果集while (res.next()) {Employee emp = new Employee();emp.setId(res.getInt(1));emp.setName(res.getString(2));emp.setAge(res.getInt(3));//以下3句注释和上边的3句代码结果一样//emp.setId(res.getInt("id"));//emp.setName(res.getString("name"));//emp.setAge(res.getInt("age"));list.add(emp);}System.out.println(list);} catch (SQLException e) {e.printStackTrace();}finally{//调用工具类中的3个参数的释放资源的方式JdbcUtils.release(con, st, res);}}}


阅读全文
0 0
原创粉丝点击