JDBC工具类
import java.sql.*;
/**
* 创建工具类 工具中的方法都是静态方法 方便直接通过类名调用
* 定义:获得Connection对象 并返回
* 定义一个静态方法 :释放资源
*/
public class JDBCUtils {
//1 定义四个静态成员变量 用于连接数据库的相关信息,Mysql数据库为例
**//请读者换成自己的数据库**
private static String driver="com.mysql.jdbc.Driver";
private static String url="jdbc:mysql://127.0.0.1:3306/day04";
private static String user="root";
private static String password="root";
//静态代码块 优先执行 只执行一次
// 注册驱动
static{
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
// 如果数据库连接失败 那么程序没有必要继续了
// 需要把编译异常改为运行异常
throw new RuntimeException("获取数据库失败");
}
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 org.junit.Test;
import utilsJDBC.JDBCUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Demo01JDBC {
//调用工具类连接的方法
//获得连接,因为下面我需要做增删改查的测试,所以提取出来
Connection conn = JDBCUtils.getConnection();
//添加的方法
@Test
public void testInsert(){
Statement stat = null;
try {
// 获得执行者对象
stat = conn.createStatement();
int row = stat.executeUpdate("INSERT INTO products (pid,pname,price,flag,category_cid) VALUES ('p10','雷神',5000,'0','002');");
System.out.println(row+"行数据添加成功");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils.close(null,stat,conn);
}
}
// 对表数据进行修改
@Test
public void testUpdate(){
Statement stat = null;
try {
// 获得执行者对象
stat = conn.createStatement();
int row = stat.executeUpdate("UPDATE " +
"products SET price=8000 where pid='p10';");
System.out.println(row+"行数据修改成功");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils.close(null,stat,conn);
}
}
// 对表数据进行删除
@Test
public void testDelete(){
Statement stat = null;
try {
// 获得执行者对象
stat = conn.createStatement();
int row = stat.executeUpdate("DELETE from products where pid IN ('p012','p013')");
System.out.println(row+"行数据删除成功");
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils.close(null,stat,conn);
}
}
//查询的方法
@Test
public void testSelect() throws SQLException {
//与数据库取得连接
Statement state = conn.createStatement();
//执行查询的sql语句
ResultSet rs = state.executeQuery("SELECT * FROM products;");
// 处理结果集
while(rs.next()){
String pid = rs.getString("pid");
String pname = rs.getString("pname");
int price = rs.getInt("price");
String flag = rs.getString("flag");
String category_cid = rs.getString("category_cid");
System.out.println(pid+" "+pname+" "+price+" "+flag+" "+category_cid);
}
//调用关流的方法
JDBCUtils.close(rs,state,conn);
}
}
不足之处请指出。