JDBC概述
1 JDBC是什么
Java database connectivity(Java语言连接数据库)
2 JDBC本质是什么
JDBC是SUN公司制定的一套接口(interface)java.sql.*(这个软件包下有很多接口)
3 面向接口编程
面向接口调用,面向接口写实现类
思考:为什么要面向接口编程?
解耦合:降低程序的耦合度,提高程序的扩展力,多态机制就是非常典型的,面向抽象编程
思考:为什么SUN制定一套JDBC接口呢?
因为每一个数据库的底层实现原理是不一样的,oracle数据库有自己的原理,MySQL数据库有自己的原理。每一个数据库产品都有自己独特的实现原理。JDBC接口是统一的规范,无论哪个数据库厂家都需要根据我提供的接口进行实现,我只需要调用接口,无需关注你具体的实现细节,降低耦合。如果没有这一接口,你的程序实现可能就和数据库的实现逻辑深度绑定,难以切换,耦合度高。
JDBC编程六步
第一步:注册驱动(告诉java程序,即将要连接的是哪个品牌的数据库)
第二步:获取连接(表示jvm的进程与数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭)
第三步:获取数据库操作对象(专门执行sql语句的对象)
第四步:执行sql语句(DQL,DML)
第五步:处理查询结果(只有当第四步执行的是select语句的时候,才有第五步处理查询的结果采集)
第六步:释放资源(使用完资源之后一定要关闭资源,java和数据库属于进程间的通信,开启之后一定要关闭)
注册驱动
第一种方式
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.register(driver);
// 也可以直接在注册中new
第二种方式
Class.forName("com.mysql.jdbc.Driver")
获取数据库连接
Connection conn = DriverManger.getConnection(url,username,,password)
执行SQL
定义sql语句
executeUpdate(删除,插入,更新) 返回Int
executeQuery(查询) 返回ResultSet
处理查询结果集
释放资源
按顺序关闭,
- 关闭查询结果resultset
- 关闭执行对象preparedstatement
- 关闭连接对象connection
配置分离
定义jdbc.properties文件
配置信息
driver:
url:
username:
password:
加载属性文件(两种方式)
一、资源绑定器方式
// 使用资源绑定器绑定属性配置文件
ResourceBundle bundle = ResourceBundle.getBuncle("jdbc")
// 获取配置信息
String driver = bundle.getString("dirver")
二、使用Properties
private static Properties properties = new Properties();
// 加载配置文件 (输入流)
InputStream in = DbUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
// 通过load()方法将输入流的内容加载到配置文件对象中
properties.load(in);
// 获取属性
properties。getProperty("jdbc.drive")
DBUtils封装
工具类中的方法是静态的
获取连接对象方法
getConnection()
资源关闭方法
close()
使用static静态块加载(定义在static{}中在类加载时,只执行一次),注册驱动
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
SQL语句的占位符
得到操作对象ps,使用?作为占位符,默认索引从1开始,设置方法
ps.setInt()
ps.setString()
...
模糊查询
其他
两种获取数据库操作对象方法区别
createStatment()
preparedStatement()// 得到的是预编译对象,速度更快
高级
事务处理
安全问题
...