这里写目录标题
jdbc简介
jdbc概念:
- jdbc是使用java语言来操作关系型数据库的一套api
- 全称:(Java DataBase Connectivity)Java数据库连接
jdbc的本质 - 官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口
- 各个数据库厂商去实现这套接口,提供数据库驱动jar包
- 我们可以使用这套接口(jdbc)编程,真正执行的代码时驱动jar包中的实现类
jdbc的好处 - 各个数据库厂商使用相同的接口,java代码不需要针对数据库分别开发
- 可随时替换底层数据库,访问数据库java代码基本不变
jdbc快速入门
步骤:(8)
0、创建工程,导入驱动jar包
1、注册驱动
Class.forName(“com.mysql.jdbc.Driver”);
2、获取连接
Connection conn= DriverManager.getConnection(url,username,password);
3、定义SQL
String sql = “updata…”
4、获取执行的sql对象
Statement stmt = conn.createStatement();
5、执行SQL
stmt.executeUpdate(sql);
6、处理返回结果
7、释放资源
.close();
jdbc API详解
DriverManager
driverManage (驱动管理类)作用:
1、注册驱动
2、获取数据库连接
Connection(数据库连接对象)
作用:
1、获取执行SQL对象(Statement createStatement)
2、事务管理(用try-catch)
try {
//开启事务
conn.setAutoCommit(false);
int row = state.executeUpdate("update salary set money =9000 where id = 1");
//int i = 3/0;
System.out.println(row);
int row1 = state.executeUpdate("update salary set money =9000 where id = 2");
System.out.println(row1);
//提交事务
conn.commit();
} catch (Exception e) {
//回滚事务
conn.rollback();
e.printStackTrace();
}
Statement
作用:
执行sql语句
执行SQL语句
int executeUpdatae(sql):执行DML、DDL语句
返回值 int
ResulSet executeQuery(sql)执行DQL语句(查询)
//处理结果集
if(row >0){
System.out.println("修改成功");
}else{
System.out.println("修改失败");
}
ResultSet(结果集对象)
作用:
1、封装了DQL查询语句的结果
Result rs = stmt.executeQuery(sql) 执行sql语
句返回resultset对象
获取查询结果
boolean next()😕/判断是否有下一个元素
true:有限行
flase:无效行
获取数据
XXX getXXX(参数):获取数据
XXX是数据类型;如 int getInt()
//打印查询结果
while(rs.next()){
int id = rs.getInt(1);
String name =rs.getString(2);
int money = rs.getInt(3);
System.out.println(id +"\t" + name +"\t" + money);
}
resultSet案列
package org.oracle.account;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/*
1、定义实体类Account
2、查询数据并、并存放到account中
3、将Account对象放如ArrayList中
*/
public class AccountTest {
public static void main(String[] args) {
ResultSet rs =null;
Statement state = null;
Connection conn =null;
//查询数据
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//创建链接
conn = DriverManager.getConnection("jdbc:mysql:///demo","root","123456");
//发送sql
state = conn.createStatement();
rs = state.executeQuery("select * from salary");
while (rs.next()){
int id = rs.getInt(1);
String name = rs.getString(2);
int money = rs.getInt(3);
// System.out.println(id);
// System.out.println(name);
// System.out.println(money);
// System.out.println("------");
Account ac = new Account(id,name,money);
List<Account> list = new ArrayList<>();
list.add(ac);
System.out.println(list);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(rs!=null){
rs.close();
}
if(state!=null){
rs.close();
}
if(conn!=null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
数据库连接池
数据库连接池简介
- 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
- 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
- 释放空闲时间超过最大空闲时间连接来避免因为没有释放数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
- 好处
- 资源重用
- 提升系统响应速度
- 避免数据库遗漏
Druid(德鲁伊)数据库连接池
使用步骤
- 导入jar包druid -1.1.12.jar
- 定义配置文件
- 加载配置文件
- 获取数据库连接池对象
- 获取连接
配置文件
基本代码(其他后面与上面相同)
====================================
```java
package org.oracle.jdbc;
/*
jdbc总代码
*/
import com.mysql.jdbc.Driver;
import java.sql.*;
public class jdbcDemo {
public static void main(String[] args) {
select();
}
public static void select(){
//加载驱动
Connection conn = null;
Statement state = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql:///demo","root","123456");
System.out.println(conn);
state = conn.createStatement();
rs = state.executeQuery("select * from salary");
while(rs.next()){
int id = rs.getInt(1);
String name =rs.getString(2);
int money = rs.getInt(3);
System.out.println(id +"\t" + name +"\t" + money);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(rs!=null){
rs.close();
}
if(state!=null){
state.close();
}
if(conn!=null){
conn.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
public static void update(){
try {
/*
1、加载驱动
2、创建连接
3、创建通道,发送sql
4、处理结果
5、关闭资源
*/
//加载驱动(创建驱动的实例)
Driver driver = new Driver();//加载类
/*其他电脑:"jdbc:mysql://localhost:3306(ip:端口号)/demo"
*/
//创建链接
Connection conn = DriverManager.getConnection("jdbc:mysql:///demo","root","123456");
System.out.println(conn);
//创建通道,发送sql
Statement state = conn.createStatement();
//增删改用executeUpdate
int row = state.executeUpdate("INSERT INTO salary VALUES(3,'昭昭',1000)");
System.out.println(row);
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}