자바 의 데이터베이스 연결 도구 류 작성
4048 단어 JDBC
단계:
1. 定义变量
2. 通过反射进行读取配置文件
3. 实例化Properties读取配置文件中的各个属性
4. 关闭字节输入流
5. 类加载
6. 通过驱动管理的获取连接方法获取到连接对象
7. 释放资源
코드:
package cn.javabs.util;
import java.io.IOException;
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;
/**
* @author: Mryang
* Jdbc工具类: 工具类的含义是作为一个通用的辅助资料使用,简化开发流程,提高效率。
* 工具类一般使用“static”进行修饰,静态化
* static的优点
* |---- 1. 可以使用 【类名.函数名称】进行调用,不必再次创建对象
* |---- 2. 优于构造函数先执行
* |---- 4. 静态成员被所有对象所共享(静态数据达到成为共享数据)
* |---- 3. 随着类的加载而加载 (也就是说类运行了,静态成员也就跟随运行了)
* static的缺点
* |---- 1. 访问出现局限性,只能访问静态
* |---- 2. 静态成员的生命周期过长
* |---- 3. 不可以与this\super关键字同用
* |----因为this代表是当前类对象,而静态存在时,有可能没有对象
* |----因为super代表是父类对象,而静态存在时,有可能没有对象,
* |----而且静态优先于对象存在
* |----4.静态方法只能访问静态成员, 非静态方法既可以访问静态又可以访问非静态;
*
*
**/
public class JdbcUtil {
// 定义 数据库驱动
private static String driverClass;
// 定义 数据库的连接
private static String url;
// 定义 数据库用户
private static String user;
// 定义 数据库用户的密码
private static String password;
// 静态代码块
static{
try {
// JdbcUtil.class是获得当前对象所属的class对象
// getClassLoader()是取得该Class对象的类装载器
// getResourceAsStream(“dbcfg.properties”) 调用类加载器的方法加载资源,返回是字节输入流
InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("dbcfg.properties");
// 实例化Properties对象,目的是为了创建props
Properties props = new Properties();
// 在props对象中可以进行加载属性列表到Properties类对象
props.load(in);//也就是说: 通过props对象进行加载输入流对象(in)
/*
* 通过getProperty方法用指定的键在此属性列表中搜索属性
*/
//也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-driverClass(被指定)
driverClass = props.getProperty("driverClass");
//也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-url(被指定)
url = props.getProperty("url");
//也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-user(被指定)
user = props.getProperty("user");
//也就是说: 通过props对象进行获取【dbcfg.properties】中的指定的键-password(被指定)
password = props.getProperty("password");
//已经获取过配置文件中的属性键值对,将字节输入流进行释放关闭
in.close();
} catch (IOException e) {
// 转换异常抛出
throw new ExceptionInInitializerError("获取数据库配置文件信息失败");
}
try {
// 类加载-->驱动
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
// 转换异常抛出
throw new ExceptionInInitializerError("加载驱动失败");
}
}
/**
* 获取连接
* @return: conn
*/
public static Connection getConnection(){
try {
//连接类型 连接对象 = 驱动管理中的获取连接(连接,用户名,密码)
Connection conn = DriverManager.getConnection(url,user,password);
// 将连接进行返回
return conn;
} catch (Exception e) {
// 转换异常抛出
throw new RuntimeException("链接数据库的url或用户名密码错误,请检查您的配置文件");
}
}
/**
* 释放资源
* 传递三个参数: 结果集对象 ,处理Sql语句对象 , 连接对象
* 无返回值状态
*/
public static void release(ResultSet rs,Statement stmt,Connection conn){
//如果 结果集中不为空
if(rs!=null){
try {
rs.close();//将结果集中关闭
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
//如果处理Sql语句对象不为空
if(stmt!=null){
try {
stmt.close();//将处理Sql语句对象关闭
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
//如果 连接不为空
if(conn!=null){
try {
conn.close();//将连接关闭
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}
프로필 작성:
#driver config for mysql
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
user=root
password=sorry
저자: 양 교
출처:https://blog.csdn.net/kese7952
나 눔 은 즐 겁 고 개인의 성장 과정 도 지 켜 보 았 습 니 다. 글 은 대부분이 업무 경험 총화 와 평소에 학습 한 것 입 니 다. 자신의 인지 가 부족 한 점 을 바탕 으로 하 는 것 도 불가피 합 니 다. 여러분 도 지적 하고 공동으로 발전 하 시기 바 랍 니 다.
본 논문 의 저작권 은 작가 에 게 있 습 니 다. 전 재 를 환영 합 니 다. 그러나 작가 의 동의 없 이 이 성명 을 보류 하고 글 페이지 의 뚜렷 한 위치 에서 제시 해 야 합 니 다. 문제 가 있 으 면 메 일 을 보 낼 수 있 습 니 다 ([email protected]자문
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터 시각화 도구 FineReport와 AWS RedShift 연결(JDBC 방법)Amazon Redshift는 클라우드의 완전 관리형, 페타바이트 규모 데이터 웨어하우스 서비스입니다. 수백 기가바이트의 데이터로 시작하여 페타바이트 이상까지 확장할 수 있습니다. 이렇게 하면 고객의 비즈니스와 고객...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.