本文用到的数据库为 MYSQL

首先你需要先了解 JDBC 常用的 API

1、Driver 接口

Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。需要注意的是,在编写 JDBC 程序时,必须要把所使用的数据库驱动程序或类库加载到项目的 classpath 中(这里指数据库的驱动 JAR 包)

2、DriverManager 类

DriverManager 类用来管理数据库中的所有驱动程序,是 JDBC 的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。此外,DriverManager类中的方法都是静态方法,所以在程序中无须对它进行实例化,直接通过类名就可以调用 DriverManager 类的常用方法有 getConnection(String url, String user, String password) 方法

3、Connection 接口

Connection 接口代表与特定的数据库的连接,要对数据表中的数据进行操作,首先要获取数据库连接,Connection 实现就像在应用程序中与数据库之间开通了一条渠道。通过 DriverManager 类的 getConnection() 方法可获取 Connection

4、Statement 接口

statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的 SQL 语句。 Statement 对象,用于执行不带参数的简单 SQL 语句

5、PreparedStatement 接口

PreparedStatement 实例包含已编译的 SQL 语句,这就是使语句“准备好”。包含于PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN 参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号("?")作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供

由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率

作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。另外它还添加了一整套方法,用于设置发送给数据库以取代 IN 参数占位符的值。同时,三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数。这些方法的 Statement 形式(接受 SQL 语句参数的形式)不应该用于 PreparedStatement 对象

6、ResultSet 接口

使用SQL 中的 SELECT 语句可以将数据库的全部结果查询出来,在 JDBC 的操作中数据库的所有查询记录将使用 ResultSet 进行接收,并使用 ResultSet 显示内容。

JDBC的编程步骤 (我使用的编程工具为 eclipse )

1、加载数据库驱动 (驱动需要自己下载)

本文加载的时 MYSQL 数据库的驱动,所以用到如下代码:

Class.forName("com.mysql.jdbc.Driver");

2、通过 DriverManager 获取数据库连接

获取数据库连接的方法,代码如下:

Connection conn = DriverManager.getConnection(String url, String username, String password);

连接数据库的 URL 需遵循一定的写法:

jdbc:mysql://hostname:port/databasename

jdbc:mysql: 是固定的写法

hostname 是指主机的名称,不知道名称的可以打开你的 MySql Workbench 查看。如图,你所需连接的数据库在本机上,hostname 就可以为 localhost 或 127.0.0.1 。如果在其他的主机上,那么 hostname 为所要连接机器的 IP 地址

用java开发数据库 java开发数据库系统 rider_database

port 是指连接数据库的端口号,如下图,一般数据库的默认端口号为 3306

 

用java开发数据库 java开发数据库系统 rider_数据库_02

databasename 是指你所需要用到的数据库的名称 

3、通过 Connection 对象获取 Statement 对象

方式有三种:

(1) createStatement() :创建基本的 Statement 对象

(2) prepareStatement(String sql) :根据传递的 SQL 语句创建 PrepareStatement 对象

(3) prepareCall(String sql) :根据传递的 SQL 语句创建 CallableStatement 对象

以第一种方法为例,代码如下:

Statement stmt = conn.createStatement();

4、使用 Statement 执行 SQL 语句

所有的 Statement 都有三种执行 SQL 语句的方法:

(1) execute(String sql) :用于执行任意的 SQL 语句 

(2) executeQuery(String sql) :用于执行查询语句,返回一个ResultSet结果集对象

(3) executeUpdate(String sql) :主要用于执行 DML (数据操作语言)和 DDL (数据定义语言)语句。执行 DML 语句(INSERT、UPDATE 或 DELETE)时,会返回受 SQL 语句影响的行数,执行 DDL (CREATE、ALTER)语句返回0

以第二种方法为例,代码如下:

ResultSet rs = stmt.executeQuery(sql);

5、操作 ResultSet 结果集
如果执行的 SQL 语句是查询语句,执行结果将返回一个 ResultSet 对象,该对象保存了 SQL 语句查询的结果。程序可以通过操作该 ResultSet 对象来取出查询结果

6、关闭连接,释放资源
每次操作数据库结束后都要关闭数据库连接,释放资源,以重复利用资源。需要注意的是,通常资源的关闭顺序与打开顺序相反,顺序是 ResultSet、Statement ( 或 PreparedStatement )和 Connection。为了保证在异常情况下也能关闭资源,需要在 try ... catch 的 finally 代码块中统一关闭资源
 

下面开始写第一个 JDBC 程序

1、首先在 MYSQL 创建一个表格

-- 创建一个数据库,名为 java
create database java;

-- 使用名叫 java 数据库
use java;

-- 创建一个名叫 user 的表格
-- id 序号,primary key 主键,auto_increment 用来自动生成序号
-- name 姓名
-- sex 性别
-- email 邮箱
-- birthday 生日
create table user(
	id int primary key auto_increment,
    name varchar(40),
    sex varchar(2),
    email varchar(60),
    birthday date
);

-- 插入三个数据到表格之中
insert into user(name,sex,email,birthday) 
	value('Jack', '男', 'jack@126.com', '1980-01-04'),
		 ('Tom', '男', 'tom@126.com', '1981-02-14'),
         ('Lucy', '女', 'luck@126.com', '1979-12-28');

-- 查询该表格,验证是否创建成功
select * from user;

查询成功后,如下:

用java开发数据库 java开发数据库系统 rider_database_03

 2、打开一个 eclipes 创建一个新项目

用java开发数据库 java开发数据库系统 rider_java_04

选择 Java Project ,再点击 next

用java开发数据库 java开发数据库系统 rider_database_05

 然后输入项目名,可以按自己想的来,再点击 Finish

用java开发数据库 java开发数据库系统 rider_java_06

 这是创建好的样子

用java开发数据库 java开发数据库系统 rider_数据库_07

 3、右击 MyJavaSql 在 New 下点击创建 Folder

用java开发数据库 java开发数据库系统 rider_database_08

 取名为 lib ,点击 Finish

用java开发数据库 java开发数据库系统 rider_用java开发数据库_09

这个时候项目目录下就会出现一个 lib 文件夹

用java开发数据库 java开发数据库系统 rider_java_10

 4、将下载好的驱动包用鼠标左键拖入lib文件中

用java开发数据库 java开发数据库系统 rider_用java开发数据库_11

 出现该选项框,点击 OK 即可

用java开发数据库 java开发数据库系统 rider_SQL_12

然后你的 lib 目录下就会有该驱动包了

用java开发数据库 java开发数据库系统 rider_用java开发数据库_13

5、右击该驱动包,找到 Build Path 单击里面的 Add to Build Path

用java开发数据库 java开发数据库系统 rider_用java开发数据库_14

 之后项目目录下会出现一个 Referenced Libraries 文件夹

用java开发数据库 java开发数据库系统 rider_用java开发数据库_15

 6、右击 src 新建一个包 Package

用java开发数据库 java开发数据库系统 rider_用java开发数据库_16

给这个 Package 取一个名字为 JavaJdbc ,可以按照自己想的来,然后点击 Finish

 

用java开发数据库 java开发数据库系统 rider_database_17

 然后你的 src 目录下就会出现一个 JavaJdbc 包

用java开发数据库 java开发数据库系统 rider_java_18

7、右键 JavaJdbc 创建一个 class

用java开发数据库 java开发数据库系统 rider_java_19

取名为 javasql ,可以按照自己想的来,然后点击 Finish

用java开发数据库 java开发数据库系统 rider_java_20

8、然后再这个 javasql.java 文件中开始敲代码

package JavaJdbc;

import java.sql.*;

public class javasql {
	public static void main(String[] args) throws SQLException {
		Statement stmt = null;
		ResultSet rs = null;
		Connection conn = null;
		try {
			// 1、加载数据库驱动
			Class.forName("com.mysql.jdbc.Driver");//这个地方我们用的是MYSQL数据库不用修改
			// 2、通过DriverManager获取数据库连接
            //这是我的数据库数据,请参照前面的步骤2改成自己的
			String url = "jdbc:mysql://localhost:3306/java";
			String username = "root";
			String password = "123456";
			conn = DriverManager.getConnection(url, username, password);
			// 3、通过Connection执行sql语句
			stmt = conn.createStatement();
			// 4、使用Statement方法执行sql语句
			String sql = "select * from user";
			rs = stmt.executeQuery(sql);
			// 5、操作ResultSet结果集
			System.out.println("id   |    name     |    sex    |    email     |    birthday");
			while (rs.next()) {
				int id = rs.getInt("id"); // 通过列名获取指定字段的值
				String name = rs.getString("name");
				String sex = rs.getString("sex");
				String email = rs.getString("email");
				Date birthday = rs.getDate("birthday");
				System.out.println(id + "    |    " + name + "     |    " + sex + "         |         " + email + "    |    " + birthday);
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		} finally {
			// 6、关闭连接,释放资源
			if(rs != null) {
				rs.close();
			}
			if(stmt != null) {
				stmt.close();
			}
			if(conn != null) {
				conn.close();
			}
		}
	}
}

9、点击运行该代码,以下是我的运行结果

用java开发数据库 java开发数据库系统 rider_SQL_21

 如果有强迫症的话,可以自己调整格式,反正我暂时是调不好的,哈哈哈。

补充:

大家在运行的过程中可以会遇到一个很小的问题,但是我不大聪明搞了很久,还是在这里和大家分享一下

用java开发数据库 java开发数据库系统 rider_SQL_22

诶,没错,就是报错,找不到或无法加载主类怎么办?我给大家一个解决方案

 找到左上角的工具栏,找到图中我所框选的地方,点击那个向下的小三角形

用java开发数据库 java开发数据库系统 rider_数据库_23

然后找到 Run Configurations... 点击一下

 

用java开发数据库 java开发数据库系统 rider_用java开发数据库_24

把你的主类名改成 你所要运行的类所在的 Package.这个类的类名

图中的主类是正确的 JavaJdbc.javasql 

用java开发数据库 java开发数据库系统 rider_SQL_25

这个时候有些小伙伴就问,能不能不用手动输入呀。能!当然能!

文本框旁边有一个 Search... 按钮,你点击一下

用java开发数据库 java开发数据库系统 rider_java_26

然后就可以直接选择了

我们这个项目里面就只有一个类,所以直接选中它点击 OK 就可以啦

用java开发数据库 java开发数据库系统 rider_用java开发数据库_27

 然后再点击 Run 你写的代码就可以跑起来了

用java开发数据库 java开发数据库系统 rider_用java开发数据库_28