【数据库笔记】编写JDBC的工具类

注册驱动和数据库连接是固定操作,何不将这些固定操作封装成一个类,并且提供静态方法返回数据库连接对象,达到代码的重复利用:

/*
 * JDBC的工具类
  * 用于注册驱动,连接数据库
 */

import java.sql.Connection;
import java.sql.DriverManager;

public class JDBCUtils {
	private JDBCUtils() {
	}

	private static Connection con;
	/*
	 * 静态代码块用于初始化类,为类的属性初始化,每个静态代码块只会执行一次。
	 *  由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
	 */
	static {
		try {
			Class.forName("com.mysql.jdbc.Driver");//注册驱动
			String url = "jdbc:mysql://localhost:3306/mydatabase";
			String user = "root";
			String password = "yuweijun";
			con = DriverManager.getConnection(url, user, password);
		} catch (Exception ex) {
			throw new RuntimeException(ex + "数据库连接失败!");
		}
	}

	/*
	 * 定义静态方法,返回数据库连接对象
	 */
	public static Connection getConnection() {
		return con;
	}
}

但是由于我们要考虑代码的封装性,当我们更换数据库时不应该去改动源码,此时我们应该创建配置文件,配置文件中以键值对的形式写入我们的信息,然后在工具类中加载配置文件,用配置文件信息去连接数据库:

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

/*
 * JDBC工具类
 * 读取配置文件注册驱动和连接数据库
 */

public class JDBCUtilsConfig {
	//私有化构造方法,使类不能被实例化
	private JDBCUtilsConfig() {}
	private static Connection con;
	static {
		try {
			FileInputStream fis = new FileInputStream("src\\MyDataBase.properties");
			Properties pro = new Properties();
			pro.load(fis);
			// 通过键获取值
			String calss = pro.getProperty("dirverClass");
			String url = pro.getProperty("url");
			String username = pro.getProperty("username");
			String password = pro.getProperty("password");
			// 注册驱动
			Class.forName(calss);
			// 连接数据库
			con = DriverManager.getConnection(url, username, password);
		} catch (Exception ex) {
			throw new RuntimeException(ex + "数据库连接失败!");
		}
	}

	// 返回数据库连接对象
	public static Connection getConnection() {
		return con;
	}
}

测试类:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import JDBCUtils.JDBCUtils;
import JDBCUtils.JDBCUtilsConfig;

public class Test {
	public static void main(String[] args) throws SQLException {
		// 调用JDBC工具类,获得数据库连接对象
		// Connection con=JDBCUtils.getConnection();
		Connection con = JDBCUtilsConfig.getConnection();
		// 查询账务的全部信息
		String sql = "select * from zhangwu";
		// 获得SQL语句执行对象,并执行预编译
		PreparedStatement ps = con.prepareStatement(sql);
		// 执行查询语言,获得结果集
		ResultSet rs = ps.executeQuery();
		while (rs.next()) {
			System.out.println(rs.getInt("id") + "   " + rs.getString("zname") + "   " + rs.getInt("money"));
		}
	}
}

后面我们可以往工具类中实现更多功能,比如增删改查等等,方便我们的使用。

猜你喜欢

转载自blog.csdn.net/qq_42370146/article/details/83618377