概念:
JDBC 就是使用Java语言操作关系型数据库的一套API 全称:( Java DataBase Connectivity ) Java 数据库连接。
JDBC的本质:
- 官方(sun公司)定义的一套操作所有关系型数据库的规则,即 接口
- 各个数据库厂商去实现这套接口,提供数据库驱动jar包
- 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动 jar包中的实现类
Java操作数据库的流程:
编写代码的步骤:
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接
String url= "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
String username= "root";
String password= "Yuan1001*";
Connection conn = DriverManager.getConnection(url, username, password);
//3.定义sql语句
String sql="update account set money=2000 where id=1";
//4.获取执行sql的对象Statement
Statement state = conn.createStatement();
//5.执行sql
int count = state.executeUpdate(sql);//受影响的行数
//6.处理结果
System.out.println(count);
//7.释放资源
state.close();
conn.close();
三、JDBC API详解
3.1DriverManager
url 连接路径:
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参 数键值对1&参数键值对2…
示例:jdbc:mysql://127.0.0.1:3306/db1
==细节:== 如果连接的是本机mysql服务器,并且mysql服务默 认端口是3306,则url可以简写为:jdbc:mysql:///数 据库名称?参数键值对
配置 useSSL=false 参数,禁用安全连接方式,解决 警示提示
user:用户名
password:密码
3.2Connection
Connection(数据库连接对象)的作用:
1.获取执行SQL的 对象
2.管理事物
3.2.1获取执行SQL的 对象
普通执行SQL对象:
预编译SQL的执行SQL对象:防止SQL注入
执行存储过程的对象:
3.2.2事务管理
- MySQL事务管理:
- JDBC事物管理:
//1. 注册驱动
//Class.forName("com.mysql.jdbc.Driver");
//2. 获取连接:如果连接的是本机mysql并且端口是默认
的 3306 可以简化书写
String url = "jdbc:mysql:///db1?
useSSL=false";
String username = "root";
String password = "1234";
Connection conn =
DriverManager.getConnection(url, username,
password);
//3. 定义sql String sql1 = "update account set money =
3000 where id = 1";
String sql2 = "update account set money =
3000 where id = 2";
//4. 获取执行sql的对象 Statement
Statement stmt = conn.createStatement();
try {
// ============开启事务==========
conn.setAutoCommit(false);
//5. 执行sql
int count1 = stmt.executeUpdate(sql1);//
受影响的行数
//6. 处理结果
System.out.println(count1);
int i = 3/0;
//5. 执行sql
int count2 = stmt.executeUpdate(sql2);//
受影响的行数
//6. 处理结果
System.out.println(count2);
// ============提交事务==========
//程序运行到此处,说明没有出现任何问题,则需求提
交事务
conn.commit();
} catch (Exception e) {
// ============回滚事务==========
//程序在出现异常时会执行到这个地方,此时就需要回
滚事务
conn.rollback();
e.printStackTrace();
}
//7. 释放资源
stmt.close();
conn.close();
}
}
3.3Statement
Statement对象的作用就是用来执行SQL语句
3.3.1 执行SQL语句
3.3.2代码实现
DML语句
/**
* 执行DML语句
* @throws Exception
*/
@Test
public void testDML() throws Exception {
//1. 注册驱动
//Class.forName("com.mysql.jdbc.Driver");
//2. 获取连接:如果连接的是本机mysql并且端口是默认的
3306 可以简化书写
String url = "jdbc:mysql:///db1?
useSSL=false";
String username = "root";执行DDL语句
String password = "1234";
Connection conn =
DriverManager.getConnection(url, username,
password);
//3. 定义sql
String sql = "update account set money = 3000
where id = 1";
//4. 获取执行sql的对象 Statement
Statement stmt = conn.createStatement();
//5. 执行sql
int count = stmt.executeUpdate(sql);//执行完
DML语句,受影响的行数
//6. 处理结果
//System.out.println(count);
if(count > 0){
System.out.println("修改成功~");
}else{
System.out.println("修改失败~");
}
//7. 释放资源
stmt.close();
conn.close();
}
3.4ResultSet
ResultSet(结果集对象)的作用:
1.封装DQL查询语句的结果
获取查询结果
数据库连接池
简介:
- 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
- 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
- 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
- 好处:
- 资源重用
- 提升系统响应速度
- 避免数据库连接遗漏
数据库连接池实现:
标准接口:DataSource
官方(SUN) 提供的数据库连接池标准接口,由第三方组织实现此接口。
功能:获取连接
- 常见的数据库连接池:
DBCP
C3P0
Druid
- Druid(德鲁伊)
Druid连接池是阿里巴巴开源的数据库连接池项目
功能强大,性能优秀,是Java语言最好的数据库连接池之一
Druid的使用步骤:
1.导入jar包 druid_1.1.12.jar
2.定义配置文件
3.加载配置文件
4.获取数据库连接池对象
5.获取连接
public static void main(String[] args) throws Exception {
//1.导入jar包
//2.定义配置文件
//3. 加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
//4. 获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
//5. 获取数据库连接 Connection
Connection connection = dataSource.getConnection();
System.out.println(connection);
//System.out.println(System.getProperty("user.dir"));
}
}