封装DBUtil
jdbc 操作 : 步骤固定
注册驱动
获得连接
获得执行语句对象
执行sql
关流
将每次的重复步骤封装成工具方法,方便使用 减少重复,提供效率
package com.zhiyou100.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* @author QiuShiJu
* @date 2020年8月12日
* @desc 数据库操作工具类
*/
public class DBUtil {
static final String url = "jdbc:mysql://localhost:3306/java28";
static final String username = "root";
static final String password = "123456";
/**
* 静态代码块:保证数据库驱动先加载且只加载一次
*/
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("加载驱动异常");
e.printStackTrace();
}
}
/**
* 获得数据库连接对象
*/
public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection(url,username,password);
} catch (Exception e) {
System.out.println("获得连接异常!");
e.printStackTrace();
}
return conn;
}
/**
* 关流
*/
public static void closeAll(Statement s,Connection conn) {
try {
s.close();
} catch (SQLException e) {
System.out.println("Statement 关流异常");
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
System.out.println("Connection 关流异常");
e.printStackTrace();
}
}
/**
* 关流
*/
public static void closeAll(ResultSet rs,Statement s,Connection conn) {
try {
rs.close();
} catch (SQLException e) {
System.out.println("ResultSet 关流异常");
e.printStackTrace();
}
try {
s.close();
} catch (SQLException e) {
System.out.println("Statement 关流异常");
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
System.out.println("Connection 关流异常");
e.printStackTrace();
}
}
}
DBUtil加强版
package com.zhiyou100.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* @author QiuShiJu
* @date 2020年8月12日
* @desc 数据库操作工具类
*/
public class DBUtil {
static final String url = "jdbc:mysql://localhost:3306/java28";
static final String username = "root";
static final String password = "123456";
static ResultSet rs;
static PreparedStatement ps;
static Connection conn;
/**
* 静态代码块:保证数据库驱动先加载且只加载一次
*/
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("加载驱动异常");
e.printStackTrace();
}
}
/**
* 获得数据库连接对象
*/
public static Connection getConnection() {
try {
conn = DriverManager.getConnection(url,username,password);
} catch (Exception e) {
System.out.println("获得连接异常!");
e.printStackTrace();
}
return conn;
}
/**
* 关流
*/
public static void closeAll() {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
System.out.println("ResultSet 关流异常");
e.printStackTrace();
}
}
try {
ps.close();
} catch (SQLException e) {
System.out.println("Statement 关流异常");
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
System.out.println("Connection 关流异常");
e.printStackTrace();
}
}
/**
* 封装查询
* 说明 : 使用PreparedStatement预处理
* @param sql : sql语句,其中如果有参数的话,使用 ? 占位
* @param param : 不定长参数数组
*/
public static ResultSet select(String sql,Object... param) {
conn = getConnection();
try {
ps = conn.prepareStatement(sql);
// 遍历参数数组
for (int i = 0; i < param.length; i++) {
ps.setObject(i+1, param[i]);
}
rs = ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
/**
* 封装增删改方法 : 全部是update
* @param sql : 增删改sql语句,参数用? 占位
* @param param : 增删改使用的参数, 是不定长数组
*/
public static int update(String sql,Object... param) {
conn = getConnection();
int rownum = -1;
try {
ps = conn.prepareStatement(sql);
// 遍历参数数组
for (int i = 0; i < param.length; i++) {
ps.setObject(i+1, param[i]);
}
rownum = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return rownum;
}
}
测试案例
package testDBUtil;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
public class TestMyDBUtil {
public static void main(String[] args) {
//String sql = "insert into user values(?,?,?,?,?,?)";
//int rowNum = DBUtil.update(sql, 9,"小萌","123456","女",new Date(),99);
//删除
// String sql ="delete from user where id =?";
// int rowNum = DBUtil.update(sql, 9);
// if (rowNum>0) {
// System.out.println("删除成功");
// } else {
// System.out.println("删除失败");
// }
// String sql = "select id,name,password,sex,birthday,score from user";
// ResultSet rs = DBUtil.select(sql);
// User user = null;
// try {
// while(rs.next()) {
// user = new User();
// //rs.getXxx () :Xxx为数据类型 ,该方法通过列名获得该字段数据
// user.setId(rs.getInt("id"));
// user.setName(rs.getString("name"));
// user.setPassword(rs.getString("password"));
// user.setSex(rs.getString("sex"));
// user.setBirthday(rs.getDate("birthday"));
// user.setScore(rs.getString("score"));
// System.out.println(user);
// }
//
// } catch (Exception e) {
// e.printStackTrace();
// }
//更新
String sql = "update user set name=? where id =?";
DBUtil.update(sql,"小康",1);
DBUtil.closeAll();
}
}
有些梦很远又滚烫,一路走一路慌张