连接数据库的方式
常见有两种: ODBC和JDBC,分属两个不同的阵营。
其中JDBC是java版本的ODBC
ODBC(Open Database Connectivity)开放的数据库连接,由微软开发出来。是一套公共的接口(标准),用来连接数据库。
JDBC是一套标准(接口),用来连接【关系型数据库】。各个数据库厂商去实现具体的功能,用户使用时使用相同一套标准即可。但是在使用时得导入不同公司提供的包(里面包含了具体实现)。
JDBC
概念
JDBC全称又叫做Java DataBase Connectivity,就是Java数据库连接,说白了就是用Java语言来操作数据库。这篇文章主要是对JDBC的原理进行讲解
功能
连接数据库
发送sql语句到数据库
处理结果集
原理
JDBC主要是用于java连接数据库的,能连接什么数据库没有指定,其实能连接很多种数据库,而且一般来说可以连接oracle和mysql,通常也是这两种。但是既然JDBC能连接这么多的数据库,开发起来太麻烦了,于是sun公司那帮人想出了一个办法,我定义一套规则,大家都按照这个规则来,实现自己公司访问数据库的实现。这套规则就是JDBC,遵循了JDBC规范的,可以访问自己数据库的API被称之为驱动。
常见关键类
JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet!
DriverManger(驱动管理器)的作用有两个:
- 注册驱动:这可以让JDBC知道要使用的是哪个驱动;
- 获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。
作用:告知程序使其知道使用的是哪一个数据库的驱动jar包
注册驱动,使用DriverManager类的一个静态方法:
static void registerDriver(Driver driver)// 注册给定的驱动程序
但是我们写代码的时候是使用Class.forName("com.mysql.cj.jdbc.Driver");注册驱动,没有显式地调用registerDrive()方法,这是因为在加载Driver类进内存的时候,就执行了该类里的静态代码块(静态代码快可以自动执行):
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
在Driver类中存在着静态代码块,也就是在加载该类进内存的时候就自动执行静态代码块了,静态代码块里DriverManager类调用了静态方法registerDriver(new Driver())。也就是归根结底还是DriverManager类在注册驱动。
注意:mysql5以后的jar包可以省略注册驱动的步骤,也就是可以不用写Class.forName("com.mysql.cj.jdbc.Driver");,但是还是建议写上。
Connection对象表示连接,与数据库的通讯都是通过这个对象展开的:
- Connection最为重要的一个方法就是用来获取Statement对象;
获取,DriverManager类的静态方法 static Connection getConnection(String url, String user, String password);
参数:
url:jdbc:mysql://IP地址:端口号/数据库名
user:用户名
password:密码
Connection对象的方法
Statement是用来向数据库发送SQL语句的,这样数据库就会执行发送过来的SQL语句
- void executeUpdate(String sql):执行更新操作(insert、update、delete等);
- ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;
ResultSet对象表示查询结果集,只有在执行查询操作后才会有结果集的产生。结果集是一个二维的表格,有行有列。操作结果集要学习移动ResultSet内部的"行光标",以及获取当前行上的每一列上的数据:
- boolean next():使"行光标"移动到下一行,并返回移动后的行是否存在;
- XXX getXXX(int col):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。
Statement对象的方法
连接步骤
- 导入驱动jar包:
- 注册驱动
- 获取数据库连接对象Connection
- 定义SQL
- 获取执行SQL语句的Statement对象
- 执行SQL,接收执行返回结果
- 处理结果
- 释放资源
实例
1 | import java.sql.Connection; |