JDBC
1.概念: Java DataBase Connectivity Java 数据库连接,Java语言操作数据库
JDBC本质: 其实是官方(sun公司)定义的一套操作关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,
提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
2.快速入门:
步骤:
1. 导入驱动jar包
2. 注册驱动
3. 获取数据库连接对象connection
4. 定义sql
5. 获取执行sql语句的对象statement
6. 执行sql,接收返回结果
7. 处理结果
8. 释放资源
3. 详解各个对象
1. DriverManager: 驱动管理对象
功能:
1. 注册驱动: 告诉程序该使用哪一个数据库驱动jar
static void registerDriver(Driver driver): 注册与给定的驱动程序DriverManager
写代码使用: Class.forName("com.mysql.jdbc.Driver")
通过查看源码发现: 在com.mysql.jdbc.Driver类中存在静态代码块
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch(SQLException e) {
throw new RuntimeException("Can't register driver!")
}
}
注意: 在mysql5之后的驱动jar包可以省略注册驱动的步骤
2. 获取数据库的连接
public static Connection getConnection(String url, String user, String password)
参数:
url: 指定连接路径
* 语法: jdbc:mysql://ip地址(域名):端口号/数据库名称
* 例子: jdbc:mysql://localhost:3306/db3
* 细节: 如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为
jdbc:mysql:///数据库名称
user: 用户名
password: 密码
2. Connection: 数据库连接对象
1. 功能:
1. 获取执行sql的对象
Statement createStatement()
PreparedStatement prepareStatement(String sql)
2. 管理事务:
开启事务: setAutoCommit(boolean autoCommit): 调用该方法设置参数为false,即开启事务
提交事务: commit()
回滚事务: rollback()
3. Statement: 执行sql的对象
1. boolean execute(String sql): 可以执行任意的sql
2. int executeUpdate: 执行DML(insert, update, delete)语句,DDL(create, alter, drop)语句
返回值: 影响的行数,可以通过这个影响的行数判断DML语句是否执行成功 返回值>0执行成功,反之执行失败
3. ResultSet executeQuery(String sql): 执行DQL(select)语句
4. JDBC控制事务
1.开启事务: setAutoCommit(false)
2.提交事务: commit()
当所有sql都执行完提交事务
3.回滚事务: rollback()
在catch中回滚事务
数据库连接池
1. 概念: 其实就是一个容器(集合),存放数据库连接的容器。
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完后,会将连接对象归还容器。
2. 好处:
1. 节约资源
2. 用户访问高效
3. 实现:
1. 标准接口: DataSource javax.sql包下的
1. 方法:
获取连接: getConnection()
归还连接: connection.close(),如果connection对象是从数据库连接池中获取,那么connection.close()不是关闭连接,而是归还连接
2. 一般我们不去实现它,由数据库厂商实现
1.C3P0: 数据库连接池技术
2.Druid:数据库连接池实现技术,由阿里巴巴提供的
4. C3P0: 数据库连接池技术
步骤:
1. 导入jar包(俩个) c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar
2. 定义配置文件
名称: c3p0.properties或者c3p0-config.xml
路径: 直接将文件放在src目录下即可
3. 创建核心对象,数据库连接池对象 ComboPooledDataSource
4. 获取连接: getConnection
5. Druid: 数据库连接池实现技术,由阿里巴巴提供的
步骤:
1. 导入jar包 druid-1.0.9.jar
2. 定义配置文件:
是properties形式的
可以叫任意名称,可以放在任意目录下
3. 加载配置文件。Properties
4. 获取数据库连接池对象: 通过工厂方法来获取DruidDataSourceFactory
5. 获取连接: getConnection
Spring JDBC
-
Spring框架对JDBC的简单封装,提供了一个JDBCTemplate对象简化JDBC的开发
步骤: 1. 导入jar包 2. 创建jdbcTemplate对象。依赖于数据源DataSource jdbcTemplate template = new JdbcTemplate(ds); 3.调用JdbcTemplate的方式来完成CRUD的操作 update(): 执行DML语句。增删改语句 queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value ,将这条记录封装为一个map集合 注意: 这个方法查询的结果集长度只能为1 queryForList(): 查询结果将结果集封装为list集合,注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中 query(): 查询结果,将结果封装为JavaBean对象 queryForObject: 查询结果,将结果封装为对象