【JDBCutils】工具类
自己写JDBCUtils类 定义静态方法 1.获取数据库连接对象 2. 关闭资源方法
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* 实现JDBC的工具类
* 定义方法直接返回数据库的连接对象
* 定义关闭资源的方法
*/
public class JDBCutils {
private JDBCutils(){}
private static Connection con;
static{
try{
// 1. 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 获得数据连接
String url = "jdbc:mysql://localhost:3306/mybase1";
String user = "root"; // 数据库账户
String password = "123"; // 数据库密码
con = DriverManager.getConnection(url, user, password);
}catch(Exception ex){
throw new RuntimeException(ex+"数据库连接失败");
}
}
// 定义静态方法,返回数据库的连接对象
public static Connection getConnection(){
return con;
}
// 定义关闭方法
public static void close(Connection con, Statement stat, ResultSet pst){
if(con !=null){
try {
con.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
stat.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
pst.close();
} catch (SQLException ex) {}
}
}
// 关闭方法重载
public static void close(Connection con, Statement stat){
if(con !=null){
try {
con.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
stat.close();
} catch (SQLException ex) {}
}
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/*
* 使用JDBCutils工具类,
*/
public class JDBCTest1 {
public static void main(String[] args) throws Exception {
// 调用JDBCutils工具类方法getConection() 获得数据库连接对象
Connection con = JDBCutils.getConnection();
// 调用数据库的连接对象con的方法prepareStatement() 对SQL语句进行预编译
PreparedStatement pst = con.prepareStatement("SELECT * FROM sort1");
// 调用pst方法executeQuery()执行SQL语句
ResultSet rs = pst.executeQuery();
// 对结果对象进行处理
while(rs.next()){
System.out.println(rs.getString("sid")+" "+rs.getString("sname")+" "+rs.getString("sprice")
+" "+rs.getString("sdesc"));
}
// 关闭资源
JDBCutils.close(con, pst, rs);
}
}
【数据表结果集放入集合中】
/*
* 数据表Sort1 对应java中Sort类
* 数据表中的列名 sid sname sprice sdesc 对应java中的Sort类的成员变量
*/
public class Sort {
private int sid;
private String sname;
private double sprice;
private String sdesc;
// 构造方法
public Sort(){}
public Sort(int sid, String sname, double sprice, String sdesc) {
this.sid = sid;
this.sname = sname;
this.sprice = sprice;
this.sdesc = sdesc;
}
// getXX,setXX方法
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public double getSprice() {
return sprice;
}
public void setSprice(double sprice) {
this.sprice = sprice;
}
public String getSdesc() {
return sdesc;
}
public void setSdesc(String sdesc) {
this.sdesc = sdesc;
}
@Override
public String toString() {
return "Sort [sid=" + sid + ", sname=" + sname + ", sprice=" + sprice
+ ", sdesc=" + sdesc + "]";
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/*
* 读取表sort,将每行的数据封装到Sort类的对象中
* 很多个Sort类对象,存储到List集合中去
*/
public class JDBCTest2 {
public static void main(String[] args) throws Exception {
// 调用JDBCutils工具类方法getConection() 获得数据库连接对象
Connection con = JDBCutils.getConnection();
// 调用数据库的连接对象con的方法prepareStatement() 对SQL语句进行预编译
PreparedStatement pst = con.prepareStatement("SELECT * FROM sort1");
// 调用pst方法executeQuery()获取结果集
ResultSet rs = pst.executeQuery();
// 创建集合对象
List<Sort> list = new ArrayList<Sort>();
while(rs.next()){
// 获取每个列数据,封装到Sort对象中
Sort s = new Sort(rs.getInt("sid"), rs.getString("sname"), rs.getDouble("sprice"), rs.getString("sdesc"));
list.add(s);
}
JDBCutils.close(con, pst,rs);
// 遍历List集合
for(Sort l:list){
System.out.println(l);
}
}
}
/* 打印
Sort [sid=1, sname=家电, sprice=3000.0, sdesc=厂家促销]
Sort [sid=2, sname=家具, sprice=8900.0, sdesc=家具价格上调]
Sort [sid=3, sname=儿童玩具, sprice=300.0, sdesc=销量火爆]
. . . . . .
*/
【使用properties配置文件】
开发中获得连接的4个参数,(驱动 URL 用户名 密码)通常都存储在配置文件中,方便后期维护,如果程序需要更换数据库,只需要修改配置文件即可。通常情况下使用properties文件配置文件:
文件位置:建议放在src下(使用类的加载器加载 文件);文件名称:文件后缀为properties ;文件内容:一行一组数据,格式是“key=value”
import java.io.InputStream;
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的方式
* 读取配置文件,获取 driverClass url username password 信息 只需执行一次 可以放到static{}中去
*
* "database.properties"文件中的内容:
* driverClass=com.mysql.jdbc.Driver
* url=jdbc:mysql://localhost:3306/mybase1
* username=root
* password=123
*/
public class JDBCutilsProperties {
private static Connection con;
private static String driverClass;
private static String url;
private static String username;
private static String password;
static{
try{
// 使用类的加载器
InputStream in =JDBCutilsProperties.class.getClassLoader().getResourceAsStream("database.properties");
Properties pro = new Properties();
pro.load(in);
// 获得集合中的键值对
driverClass = pro.getProperty("driverClass");
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
Class.forName(driverClass);
con = DriverManager.getConnection(url,username,password);
}catch(Exception ex){
throw new RuntimeException(ex+"数据库连接失败");
}
}
// 定义静态方法,返回数据库的连接对象
public static Connection getConnection(){
return con;
}
// 定义关闭方法
public static void close(Connection con, Statement stat, ResultSet pst){
if(con !=null){
try {
con.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
stat.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
pst.close();
} catch (SQLException ex) {}
}
}
// 关闭方法重载
public static void close(Connection con, Statement stat){
if(con !=null){
try {
con.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
stat.close();
} catch (SQLException ex) {}
}
}
}