import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/*
* 创建JDBC工具类
* 定义一个properties文件,存储数据库的4大信息
* 在成员位置定义5个存储数据库信息的变量
* 定义一个静态代码块
* a.使用Properties集合+IO读取配置文件中的信息,把信息保存到集合中
* b.获取集合中的数据库连接信息,给成员变量赋值
* c.注册驱动和获取数据库连接对象
* 定义一个静态方法,用于获取并返回数据库连接对象Connection
* 定义一个静态方法,用于释放资源
*/
public class JDBCUtils {
/**
* 在成员位置定义5个存储数据库信息的变量
*/
private static String driver;
private static String url;
private static String user;
private static String password;
/**
* 定义一个Connection类型的变量用来存储获取到的Connection实例化对象
*/
private static Connection conn;
/**
* 私有构造方法,防止用户创建对象,浪费内存空间
*/
private JDBCUtils() {
}
static {
try {
/**
* 使用properties集合读取配置信息
*/
FileReader fr = new FileReader("data.properties");
Properties p = new Properties();
p.load(fr);
/**
* 获取集合中的数据库连接信息,给成员变量赋值
*/
driver = p.getProperty("driver");
url = p.getProperty("url");
user = p.getProperty("user");
password = p.getProperty("password");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
/**
* 创建驱动和数据库连接对象
*/
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
/**
* 如果数据库连接失败,则不应该继续往下,抛出运行时异常给虚拟机,终止程序
*/
throw new RuntimeException("数据库连接失败!");
}
}
/**
* 定义一个静态方法,用于获取数据库连接对象Connection
*/
public static Connection getConnection() {
return conn;
}
/**
* 定义一个静态方法,用于释放资源
*/
public static void close(ResultSet rs, Statement stat, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
/*
* 测试JDBCUtils工具类
*/
public class Test {
public static void main(String[] args) {
show();
}
private static void show() {
/**
* 获取数据库连接对象Connection
*/
Connection conn = JDBCUtils.getConnection();
Statement stat = null;
ResultSet rs = null;
try {
/**
* 获取执行sql语句的执行者对象
*/
stat = conn.createStatement();
/**
* 执行sql语句
*/
String sql = "SELECT * FROM 表名";
rs = stat.executeQuery(sql);
/**
* 处理结果集,遍历Set集合
*/
if (rs.next()) {
System.out.println(rs.getInt("cid") + "\t" + rs.getString("cname"));
} else {
System.out.println("没有查询到指定的数据!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
/**
* 使用JDBCUtilsConfig工具类中的方法close释放资源
*/
JDBCUtils.close(rs, stat, conn);
}
}
}