一、JDBC介绍
1. 图解
2. 描述
1). 概念
Java DataBase Connectivity Java数据库连接,Java语言操作数据库
2). 本质
官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各数据库厂商去实现这套接口,提供数据库驱动jar包。我们使用这套接口(JDBC)编程,根据多态性质,真正执行的代码是驱动jar包中的实现类
Interface Person
Person person = new Worker();
//执行的是Worker类中的eat方法
person.eat();
3. 代码实现
package cn.javaee.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class javaee_jdbc {
public static void main(String[] args) throws Exception {
//0. 需root登陆数据库,将数据库时区改为中国(+8:00)时区,set global time_zone ='+8:00';
//1. 导入数据库驱动jar包 mysql-connector-java-8.0.21.jar
//2. 注册驱动,该版本的驱动存在路径更新为com.mysql.cj.jdbc.Driver,
Class.forName("com.mysql.cj.jdbc.Driver");
//3. 获取数据库连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","huoshan","huoshan");
//4. 定义sql语句
String sql = "update mytable set sex = 'famale' where id = 2";
//5. 获取 可执行sql语句 的对象
Statement statement = connection.createStatement();
//6. 执行sql语句,并返回执行结果
int count = statement.executeUpdate(sql);
//7. 处理结果
System.out.println(count);
//8. 释放资源
statement.close();
connection.close();
}
}
4. 代码详解
1). DriverManager 驱动管理对象
- 功能:
-
-
注册驱动:告诉程序应该使用哪一个数据库驱动jar包
static void registerDriver(Driver driver):注册给定的驱动程序DriverManager
代码使用: Class.forName("com.mysql.cj.jdbc.Driver"); 查看源码发现,com.mysql.ct.jdbc.Driver类加载时会自动加载静态代码块
static { try { java.sql.DriverManager.registerDriver(new Driver()); }catch(SQLException E){ throw new RuntimeException("Can't register driver!"); } }
注意:mysql5之后的驱动jar包可以省略代码注册驱动的步骤
-
-
- 获取数据库连接
-
方法:static Connection getConnection(String url,String user,String password)
-
参数:
-
url: 指定连接的路径
- 语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
- 例子: jdbc:mysql://localhost:3306/mydatabase
- 细节: 如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可简写为:jdbc:mysql:///mydatabase
-
user: 用户名
-
password: 密码
-
-
2). Connection: 数据库连接对象
-
功能:
-
获取可执行sql的对象
- Statement createStatement()
- PreparedStatement prepareStatement(String sql)
-
管理事务
-
开启事务:
void setAutoCommit(boolean autoCommit):调用该方法设置参数为false,则开启事务
-
提交事务:
commit()
-
回滚事务:
rollback()
-
-
3). Statement: 执行静态sql语句的对象
-
执行sql
-
boolean execute(String sql):可以执行任意的sql
-
int executeUpdate(String sql):执行DML(数据库操作语句insert、update、delete)语句(常用)、DDL(数据库定义语句create、alter、drop)语句
- 返回值:影响的行数,可以通过返回值判断DML语句是否执行成功,>0,(执行DDL返回值会=0) 则执行成功,反之失败
-
ResultSet executeQuery(String sql): 执行DQL(select)语句
-
4). ResultSet: 结果集对象,封装查询结果
-
boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,返回false,否则返回true
-
getXxx(param):获取数据
-
Xxx: 代表数据类型 如: int getInt() ,String getString()
-
param:
-
int: 代表列的编号,从 1开始,如:getString(1);
-
String: 代表列的名称,如:getDouble("salary")
-
-
-
注意:
-
使用步骤:
- 游标向下移动一行
- 判断是否有数据
- 获取数据
while(resultSet.next()){ //... }
-