JDBC
JDBC
- JDBC就是使用java语言操作关系型数据库的一套API
mysql jar包导入和下载
下载地址:MySQL :: Download Connector/J
下载完成后导入jar包
例子:
//1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接
String url="jdbc:mysql://127.0.0.1:3306/db2";
String username="root";
String password="123456";
Connection conn = DriverManager.getConnection(url, username, password);
//3.定义sql语句
String sql="update account set money=2000 where id=1;";
//4.获取执行sql的对象 statement
Statement stmt = conn.createStatement();
//5.执行sql
int count =stmt.executeUpdate(sql);//受影响的行数
//6.处理结果
System.out.println(count);
//7.释放资源
stmt.close();
conn.close();
JDBC的api
DriverManager
- DriverManager(驱动管理类)作用:
-
- 注册驱动
- 获取数据库连接
Connection
- Connection(数据库连接对象)作用:
-
- 获取执行sql的对象
- 管理事务
- 管理事务例子:
try {
conn.setAutoCommit(false);//开启事务
//5.执行sql
int count1 =stmt.executeUpdate(sql1);//受影响的行数
//6.处理结果
System.out.println(count1);
//5.执行sql
int count2 =stmt.executeUpdate(sql2);//受影响的行数
//6.处理结果
System.out.println(count2);
conn.commit();//提交事务
} catch (Exception e) {
conn.rollback();//回滚事务
e.printStackTrace();
}
Statement
- 执行sql语句
- 主要方法:
-
- statement.executeQuery(); 查找操作 返回resultset
- statement.execute(); 执行任何sql
- statement.executeUpdate(); 更新 插入 删除都是用这个,返回一个受影响的行数
- statement.executeBatch;处理多个sql语句
Resultset
- 获得指定的结果集
- 遍历
-
- resultset.beforefirst() 移动到最前面
- resultset.afterlast()移动到最后面
- resultset.next()移动到下一行
- resultset.revious()移动到上一行
- resultset.absolute(int i) 移动到指定行
conn.prepareStatement
- 预编译 防止sql的注入
- 例子:
String url="jdbc:mysql://127.0.0.1:3306/db1";
String username="root";
String password="123456";
Connection conn = DriverManager.getConnection(url, username, password); //链接数据库成功
//准备sql语句
String user_name="xiaoqiu";
String user_pwd="1234567";
String sql="select * from user where username=? and password=?";
PreparedStatement pstm = conn.prepareStatement(sql);//获取pstm对象
pstm.setString(1,user_name); //给第一个?赋值
pstm.setString(2,user_pwd);//给第二个?赋值
ResultSet rs = pstm.executeQuery();// 获取结果集
if(rs.next())
{
System.out.println("登陆成功");
}else{
System.out.println("账号或者密码错误");
}
conn.close();
pstm.close();
rs.close();
数据库连接池
- 数据库连接池是一个容器,负责分配,管理数据库连接
- 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
- 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
- 好处
-
- 资源重用
- 提升系统相应速度
- 避免数据库连接遗漏
使用Druid的具体步骤
配置文件:
url=jdbc:mysql://localhost:3306/db2?rewriteBatchedStatements=true
username=root
password=123456
driverClassName=com.mysql.cj.jdbc.Driver
# 初始化连接数量
initialSize=10
# 最大连接数
maxActive=20
# 最大的等待时间
maxWait=1000
filters=wall
//1.导入jar包
//2.定义配置文件
//3.加载配置文件
Properties prop=new Properties();
prop.load(new FileInputStream("JDBC/src/druid.properties"));
//4.获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
//获取数据库连接
Connection conn = dataSource.getConnection();
System.out.println(conn);