JDBC
JDBC
Java Data Base Connectivity
java语言操作数据库
JDBC的本质,就是官方定义的一套操作所有关系型数据库的规则,就是接口,各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们使用这套接口,就可以执行代码驱动的实现类
包讲解
com.test.domain-实体类-getset
.dao-核心代码
.util-连接数据库
使用步骤
- 导入驱动jar包
- 复制mysql的jar包到项目的libs文件夹下
- 右键add as Library
- 注册驱动
- 获取数据库连接对象 Connection
- 定义sql语句
- 获取执行sql语句的对象 Statement
- 执行sql,接受返回结果
- 释放资源
Class.forName("com.mysql.jdbc.Driver");
Statement statement = DriverManager.getConnection("jdbc:mysql://localhost:3306/java2303","root","root").createStatement();
String sql = "select * from student";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()){
System.out.println(resultSet.getString("stuId")+" "
+resultSet.getString(2)+" "
+resultSet.getString(3)+" "
+ resultSet.getString(4)+" "
);
}
statement.close();
resultSet.close();
DriverManager对象
驱动管理对象
- 注册驱动:告诉java程序该使用哪个数据区驱动jar
- 获取数据库链接
- static Connection getConnection(String url,String user,String password)
- url:指定链接的路径
- jdbc:mysql://ip地址(域名):端口号/数据库名
- user:数据库y用户名
- password:数据库密码
- url:指定链接的路径
- static Connection getConnection(String url,String user,String password)
Connection对象
数据库连接对象
- 获取执行sql的对象
- Statement createStatement();
- prepareStatement prepareStatement(String sql)
- 管理事务
- 开启事务setAutoCommit(boolean b):调用该方法设置参数为false,即可开启事务
- 提交事务commit()
- 回滚事务rollback()
Statement对象
执行sql语句
int executeUpdate(String sql):执行DML语句,DDL语句,返回值为影响的行数,可以通过返回值判断语句是否执行成功
ResultSet executeQuery(String sql):执行DQL语句
ResultSet对象
结果集对象,封装了查询的结果
boolean next():游标向下移动一行,判断当前行是否是最后一行(是否有数据),如果是,则返回false,如果不是返回true
getXXX(参数):通过数据库表中的游标或者列名来获取数据
Druid连接池
连接池中保存了一些数据库连接,这些连接是可以重复使用的
原理
- 启动连接池,连接池就会初始化一些连接
- 当用户需要使用数据库连接,直接从连接池中取出
- 当用户使用完连接,会将连接重新放回连接池中
好处
连接池中会保存一些连接,这些连接可以重复使用,降低数据资源的消耗
常用的连接池实现组件
- 阿里巴巴-德鲁伊Druid连接池:Druid是阿里巴巴开源平台上的一个项目
- C3P0是一个开源的连接池,目前使用它的开源项目有Hibernate,Spring等。
- DBCP(DataBase Connection Pool)数据库连接池,是Tomcat使用的连接池组件。
Druid常用的配置参数
方法名 | 说明 |
---|---|
initialSize | 刚启动连接池时,连接池中包含连接的数量 |
maxActive | 连接池中最多可以放多少个连接 |
maxWait | 获取连接时最大等待时间,单位毫秒 |
druid.properties文件内容
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/day17
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
package com.qiankun.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DruidUtils {
private static DataSource dataSource;
static {
try {
Properties pro = new Properties();
pro.load(DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
dataSource = DruidDataSourceFactory.createDataSource(pro);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//获取连接
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
//释放资源
public static void close(Statement statement, Connection connection){
if (statement!=null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection!=null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Statement statement, Connection connection, ResultSet resultSet){
close(statement, connection);
if (resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static DataSource getDataSource(){
return dataSource;
}
}
使用步骤
- 导入druid-1.0.0.jar的jar包
- 复制druid.properties文件到src下,并设置对应参数
- 加载properties文件的内容到Properties对象中
- 创建Druid连接池,使用配置文件中的参数
- 从Druid连接池中取出连接
- 执行SQL语句
- 关闭资源