JDBC
- Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
- 为了简化 开发人员的(对数据的统一)操作,提供了一个java操作数据库规范,对于开发人员来说,我们只需要掌握JDBC接口的操作即可;
创建第一个JDBC–基础版
1.准备数据库
2.导入驱动
3. 创建java
- 导入数据库驱动mysql-connector-java-8.0.21.jar
注意:导入jar包后,需要add as library
- 加载驱动Class.forName
- 用户信息和url,username,password
- 连接成功,得到数据库对象Connection
- 获取执行sql对象 statement 用来执行sql
- 执行sql
- 获取结果集resultSet
- 释放连接
package com.jdbc;
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException, SQLException {
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 用户信息和url
/**
* test 数据库名
* useUnicode=true 支持中文
* characterEncoding=utf-8 使用utf-8
*useSSL=true 是否通过证书或者令牌进行安全验证
* serverTimezone=Asia/Shanghai 设置时区
*/
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=true";
String user="root";
String password="cqmcx";
//3.获取连接 connection 相当于一个数据库对象
Connection connection = DriverManager.getConnection(url, user, password);
//4.获取执行sql对象 statement 用来执行sql
Statement statement = connection.createStatement();
//5.执行sql 可以现在数据库中写好sql
String sql="select * from demo where name='cx'";
//6.获取结果集
/**
* statement.executeQuery 执行查询
* statement.executeUpdate 执行 增删改
* statement.execute 怎删改查 都可以
*/
ResultSet resultSet = statement.executeQuery(sql);
//6.遍历结果
while (resultSet.next()){
//列名要与数据库中字段名一样
System.out.println("id="+resultSet.getInt("id"));
System.out.println("name="+resultSet.getString("name"));
}
//7.释放连接
resultSet.close();
statement.close();
connection.close();
}
}
JDBC中对象详解
DriverManager
//2. 加载驱动
DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
1和2 两种方式都可以,推荐使用下面一种,因为Driver这个类:
// 静态代码块只在类加载的时候执行,且只执行一次
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
不明白反射的可以去 反射机制
URL
- mysql :3306
协议://主机地址:端口号/数据库名?参数1&参数2&参数…- oralce:1521
jdbc:oracle:thin:@主机地址:1521:sid
connection
//回滚事务
connection.rollback();
//提交事务
connection.commit();
//开启关闭事务的自动提交
connection.setAutoCommit();
//4.执行sql 可以现在数据库中写好sql
String sql="update demo set name='cxcx' where id=1";
try {
// 关闭事务自动提交
connection.setAutoCommit(false);
int i = statement.executeUpdate(sql);//更新操作
//提交事务
connection.commit();
int i2=10/0;//发生异常
//开启事务自动提交
connection.setAutoCommit(true);
} catch (SQLException e) {
connection.rollback();//发生异常回滚事务
e.printStackTrace();
} finally {
statement.close();
connection.close();
}
事务已经提交了,提交了就不能回滚了
//4.执行sql 可以现在数据库中写好sql
String sql="update demo set name='cx' where id=1";
try {
// 关闭事务自动提交
connection.setAutoCommit(false);
int i = statement.executeUpdate(sql);//更新操作
int i2=10/0;//发生异常
//开启事务自动提交
connection.setAutoCommit(true);
//提交事务
connection.commit();
} catch (SQLException e) {
connection.