JDBC(一)——JDBC连接数据库

JDBC(Java database connectivity,Java数据库连接)是一种执行SQL语句的Java API。可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

下载数据库驱动并在项目里配置数据库驱动

先新建一系列文件

new -> Java project : JDBCPro
new -> package : com.javatest.jdbc.chap02.sec03
new -> Class : Demo1

下载JDBC Mysql数据库的驱动

mysql jdbc 驱动包版本与对应的mysql 版本:
Connector/J 5.1 支持Mysql 4.1、Mysql 5.0、Mysql 5.1、Mysql 6.0 alpha这些版本。
Connector/J 5.0 支持MySQL 4.1、MySQL 5.0 servers、distributed transaction (XA)。
Connector/J 3.1 支持MySQL 4.1、MySQL 5.0 servers、MySQL 5.0 except distributed transaction (XA) support。
Connector/J 3.0 支持MySQL 3.x or MySQL 4.1。
https://www.mysql.com/products/connector/,选择JDBC Driver for MySQL(Connector/J)。
或(直接下载Myasql Installer.msi,以用户界面安装自己需要的软件。将下载的jdbc驱动解压,其中mysql-connector-java-bin.5.1.46.jar为我们需要加载的驱动文件。
参考https://www.cnblogs.com/chengxs/p/5986095.html
由于我Mysql和jdbc是分别下载的,所以没有用.msi安装。)

注意:此处eclipse的项目需要切换到project explore视图,不然右击项目不会有Build path选项。Windows ->Show view -> Project Explore。现在可以看到,jdbc驱动并没有加载到项目。

先将数据库驱动配置到User Libraries

(以后就可以跳过配置用户库文件了,只需要配置项目文件)
Windows -> preference -> java -> User Libraries:

点击Add external JARs…,将刚才下载的jdbc驱动解压,将其中的mysql-connector-java-bin.5.1.46.jar文件导入,结果如下:

再将数据库驱动配置到当前java项目的路径中

主要是导入mysql数据库的驱动com.mysql.jdbc.Driver类。
右击项目 -> Build Path -> Configure Build Path -> Libraries -> Add external JARs…:继续导入刚才下载的mysql-connector-java-bin.5.1.46.jar驱动包
此时可以在视图中看到,多了一项Referenced Libraries:

JDBC连接数据库步骤

加载驱动;

连接数据库;

使用语句操作数据库;

关闭数据库连接,释放资源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//注意要先打开Mysql,才能获取数据库连接
public class Demo1 {
//数据库地址
private static String dbUrl= "jdbc:mysql://localhost:3306/db_book";
//驱动名称
private static String jdbcName = "com.mysql.fabric.jdbc.FabricMySQLDriver";
private static String dbUserName = "root"; //数据库用户名
private static String dbPassword = "123456"; //数据库密码

public static void main(String[] args) {
try {
Class.forName(jdbcName);
System.out.println("加载数据库成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection con = null;
try {
//获取数据库连接
con =DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
System.out.println("获取数据库连接成功,可以进行数据库操作");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("获取数据库连接失败");
} finally{
try {
con.close();
System.out.println("关闭数据库");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

JDBC编程步骤

加载数据库驱动

Mysql驱动名:com.mysql.fabric.jdbc.FabricMySQLDriver
以反射方式加载驱动:Class.forName(驱动名);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//加载数据库驱动,若成功则输出“加载驱动成功”,否则输出“加载驱动失败”
public class Demo1 {
private static String jdbcName = "com.mysql.fabric.jdbc.FabricMySQLDriver";
public static void main(String[] args) {
//使用反射加载数据库驱动
try {
Class.forName(jdbcName);
System.out.println("加载驱动成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("加载驱动失败");
}
}
}

之前将mysql的驱动名设置为com.mysql.jdbc.Driver,运行时总是报错NotFoundClassException,在下载的jdbc驱动官方文件中打开demo,发现驱动名错了,应该为
com.mysql.fabric.jdbc.FabricMySQLDriver,此时再运行,“加载驱动成功”。

通过DriverManager获取数据库连接

DriverManager类:驱动管理类,主要负责获取一个数据库的连接。
DriverManager.getConnection (String url, String usr, String password); //试图建立给定数据库的url地址连接
Mysql数据库的连接(url)地址格式:
数据库地址:jdbc:mysql://IP地址:端口号/数据库名称
其中
jdbc协议:JDBC URL中的协议总是jdbc
子协议:驱动程序名或数据库连接机制的名称,如mysql
子名称:一种标志数据库的方法,必须遵循“//主机名:端口号/协议”的标准URL命名约定,如//localhost:3306/db_book

通过Connection对象创建Statement对象

有三种方法:
1)createStatement():创建基本statement对象
2)prepareStatement(Stirng sql):根据传入的SQL语句创建预编译的statement对象
3)prepareCall(String sal):根据传入的SQL语句创建CallableStatement对象

使用Statement执行SQL语句

有三种方法
1)execute():可以执行任何SQL语句,但比较麻烦
2)executeUpdate():主要用于执行DML和DDL语句。执行DML语句返回受SQL语句影响的行数;执行DDL语句返回0
3)executeQuery():只能执行查询语句,执行后返回代表查询结果的ResultSet对象

操作结果集

如果执行的是查询语句,将返回以一个代表查询结果的ResultSet对象(结果集),Result结果集逻辑上类似于一个表,程序可以通过操作该ResultSet对象来取出查询结果。
有两种方法
1)next()、previous()、first()、last()、beforeFirst()、afterLast()、absolute()等:移动记录指针的方法
2)get ():获取记录指针指向的行、列的值。

关闭数据库连接,回收数据库资源

关闭ResultSet、Statement、Connection等资源。