一、什么是JDBC?
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。它由一组用Java语言编写的类和接口组成。有了JDBC,程序猿就可以直接通过java代码来访问数据库。
二、JDBC API和驱动
JDBC API和驱动
JDBC的API是由Sun公司所提供的,供程序员调用的接口与类,集成在java.sql和javax.sql包中,有DriverManager类、Connection接口、Statement接口、ResultSet接口。
JDBC 驱动是由数据库厂商提供的,负责连接各种不同的数据库。
JDBC主要有以下部分:
- DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。
- Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)。
- Connection:数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement。
- Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。
- PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)。
- ResultSet:是executeQuery()方法的返回值,它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。
三、JDBC应用程序
构建一个 JDBC 应用程序包括以下六个步骤-
- 导入数据包:需要你导入含有需要进行数据库编程的 JDBC 类的包。大多数情况下,使用 import java.sql. 就足够了。
- 注册 JDBC 驱动器:需要你初始化一个驱动器,以便于你打开一个与数据库的通信通道。
- 打开连接:需要使用 DriverManager.getConnection() 方法创建一个 Connection 对象,它代表与数据库的物理连接。
- 执行查询:需要使用类型声明的对象建立并提交一个 SQL 语句到数据库。
- 提取结果数据:要求使用适当的 ResultSet.getXXX() 方法从结果集中检索数据。
- 清理环境:依靠 JVM 的垃圾收集来关闭所有需要明确关闭的数据库资源。
这里需要用到几个函数
Class.ForName();
DriverManager.getConnection();
connection.createStatement();
statement.executeUpdate()
博主的运行环境IDEA2019.3+JDK1.8+Mysql8.0.18
首先在项目目录下新建一个lib目录,然后把jdbc驱动的jar包放到改目录下,并添加到lib中。
所使用的数据库。
create database dbtest;
use dbtest;
create table if not exists`userInfo`(
`id` int not null auto_increment,
`name` varchar(20) not null,
`email` varchar(20) not null,
primary key(`id`)
);
insert into userInfo(name,email) value('zhangsan','1136667341@qq.com');
insert into userInfo(name,email) value('zhangsan','1136667341@qq.com');
insert into userInfo(name,email) value('zhangsan','meiya@cn-meiya.com');
insert into userInfo(name,email) value('lisi','meiyuan@0757info.com');
insert into userInfo(name,email) value('wangwu','melodylu@buynow.com');
insert into userInfo(name,email) value('xiaoxiao','kevintian126@126.com');
insert into userInfo(name,email) value('xiaohie','wq901200@hotmail.com ');
insert into userInfo(name,email) value('zhouli','tony@erene.com.com');
select * from userInfo;
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JdbcDemo1 {
public static void main(String[] args) throws Exception {
/*加载驱动*/
Class.forName("com.mysql.cj.jdbc.Driver");
/*获得链接对象*/
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbtest?serverTimezone=UTC","root", "root");
String sql ="select * from userInfo";
/*创建一个statment对象*/
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
String name=resultSet.getString("name");
String email=resultSet.getString("email");
System.out.println("name: "+name+" email: "+email);
}
statement.close();
connection.close();
}
output:
zhangsan 1136667341@qq.com
zhangsan 1136667341@qq.com
zhangsan meiya@cn-meiya.com
lisi meiyuan@0757info.com
wangwu melodylu@buynow.com
xiaoxiao kevintian126@126.com
xiaohie wq901200@hotmail.com
zhouli tony@erene.com.com
Github项目链接,含完整jar包和项目代码:代码。欢迎star。