package com.zhejiang.test.manage.utils;
import java.sql.*;
/**
* @Auther: hsd
* @Date: 2022/10/19 09:52
* @Description:
*/
public class JDBCUtils {
//1,获取数据库的连接(注册驱动+获取连接)
/**
* 获取数据库的连接
* @return 数据库的连接对象Connection
* @throws Exception
*/
static public Connection getConnection() throws Exception{
//1,注册驱动
Class.forName("com.mysql.jdbc.Driver");//全路径
//2,获取数据库的连接(用户名/密码)
//jdbc连接mysql数据库的协议//本机:端口号/数据库的名字 解决中文乱码 指定时区 关闭权限检验
String url="jdbc:mysql://localhost:3306/zhejiang?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false" ;
Connection c = DriverManager.getConnection(
url,"root","root");
return c ;//返回给调用者
}
/**
* 释放资源,提取了长长的代码
* @param r 结果集资源
* @param s 传输器资源
* @param c 连接资源
*/
static public void close(ResultSet r, PreparedStatement s, Connection c){
if(r != null){ //避免了空指针异常
try {
r.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(s != null) {
try {
s.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(c != null) {
try {
c.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
使用
public class Test3 {
public static void main(String[] args) throws Exception{
method();//查询部门表的<100数据
}
//查询部门表的<100数据
private static void method() {
Connection c =null;
PreparedStatement s =null;
ResultSet r =null;
try{
c = JDBCUtils.getConnection();//利用工具类,获取数据库的连接
//获取传输器,执行SQL骨架
String sql = "select * from dept where deptno < ?";
s = c.prepareStatement(sql);
//设置SQL的参数
s.setInt(1,100);//给第一个?设置100
r = s.executeQuery();//执行查询的SQL语句
//处理结果集
while(r.next()){//next()判断有数据吗
//获取数据getXxx()--获取表里的dname字段的值,并打印
String str = r.getString("dname");
System.out.println(str);
}
}catch (Exception e){
//项目上线阶段,给出的解决方案,比如输出
System.out.println("数据库连接出错~~");
//项目开发调试阶段,给出的解决方案,根据报错信息
e.printStackTrace();
}finally {//关闭资源
JDBCUtils.close(r,s,c);//调用工具类里的close()
}
}
}