JDBC概述二(JDBC编程+案例展示)

一(JDBC的编程步骤)

1.加载数据库驱动

加载数据库驱动通常使用class类的静态方法forName()来实现,具体实现方式如下:

Class.forName(“DriverName”),DriverName就是数据库驱动类所对应的字符串。

要加载MySQL数据库的驱动可以采用如下代码:

Class.forName("com.mysql.cj.jdbc.Driver");//MySQL8版本
Class.forName("com.mysql.jdbc.Driver");//MySQL5版本

加载Oracle数据库的驱动可以采用如下代码:

Class.forName("Oracle.jdbc.driver.OracleDriver");

从上面两种加载数据库驱动的代码可以看出,在加载驱动时所加载的并不是真正使用数据库的驱动类,而是数据库驱动类名的字符串。

2.通过DriverManage获取数据库连接。

DriverManage中提供了一个getConnection()方法来获取数据库连接,获取方式如下:

Connection con=DriverManage.getConnection(String url,String user,String pwd);

方法里面的三个参数分别表示连接数据库的url,登录数据库的用户名和密码。其中用户名和密码通常由数据库管理员设置,而连接数据库的url则遵循一定的写法。以MySQL数据库为例,其地址的书写格式如下:

url="jdbc:mysql://hostname:port/databasename";

eg:url="jdbc:mysql://localhost:3306/stu" ;

上面代码中,jdbc:mysql是固定写法,mysql指的是MySQL数据库。hostname表示主机名(如果数据库在本机上,hostname可以为localhost或者127.0.0.1,如果在其他机器上,hostname为所要连接机器的IP地址),port指的是连接数据库的端口号(MySQL端口号默认为3306)databasename指的是MySQL中相应数据库的名称。

3.通过Connection对象获取Statement对象。

Connection创建Statement的方式有以下3种:

(1):createStatement();创建基本的Statenment对象。

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

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

以创建基本的Statement对象为例,创建方式如下:

Statement stmt=con.createStatement();

4.使用Statement执行SQL语句。

所有的Statement都有如下三种执行SQL语句的方法。

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

(2):executeQuery(String sql):用于执行查询。返回一个ResuleSet结果集对象。

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

以execyteQuery()方法为例,其使用方式如下:

ResultSet rs=stmt.executeQuery(sql);

5.操作ResultSet结果集。

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

6.关闭连接,释放资源。

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

二(案例展示)

从数据库中的数据表读取数据,并将结果打印在控制台。

(1):搭建数据库环境。

在MySQL数据库中创建一个名为jdbc的数据库,在该数据库下创建一个名称为tb_user的表,创建数据库和表的SQL语句如下:

create database jdbc;
use jdbc;
create table tb_user(
    id int primary key auto_increment,
    NAME varchar(40),
    sex varchar(2),
    email varchar(60),
    birthday DATE

);

上述创建tb_user表时添加了id,NAME,sex,email,birthday5个字段,NAME字段名称为大写形式,是因为NAME在MYSQL数据库中属于关键字,为方便区分,所以将NAME字段名称全部用大写表示。

数据库和表创建成功后,再向tb_user表中添加3条数据,插入的SQL语句如下:

insert into tb_user(NAME,sex,email,birthday)
values ('Jack','男','jack@126,com','2000-08-01'),
       ('Tom','男','[email protected]','1999-01-09'),
       ('Alice','女','alice@126,com','2001-05-06');

查看数据是否添加成功,使用select语句查询tb_user表中的数据,查询结果如下:

JDBC概述二(JDBC编程+案例展示)_第1张图片

 (2):创建项目环境,导入数据库驱动。

2.1 在项目中新建一个文件夹Directory,取名为lib,将数据库驱动文件JAR包mysql-connector-java-8.0.18复制在lib文件夹中(驱动下载地址,可进maven仓库)。

2.2 右键File-Project Structure-Libraries-+-Java-项目下lib包中的驱动包-ok-ok-ok-Apply-ok

JDBC概述二(JDBC编程+案例展示)_第2张图片

 JDBC概述二(JDBC编程+案例展示)_第3张图片

 JDBC概述二(JDBC编程+案例展示)_第4张图片

 JDBC概述二(JDBC编程+案例展示)_第5张图片

JDBC概述二(JDBC编程+案例展示)_第6张图片

 JDBC概述二(JDBC编程+案例展示)_第7张图片

 2.3 编写JDBC程序

package jdbc;

import java.sql.*;

public class Demo1 {
    public static void main(String[] args) throws SQLException {
        Connection con=null;
        Statement sta=null;
        ResultSet res=null;

        try {
            //1.加载数据库驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.通过DriverManage获取数据库连接
            String url="jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=true";
            String user="root";
            String password="123456";
            con= DriverManager.getConnection(url,user,password);
            //3.通过Connection对象来获取Statement对象
            sta= con.createStatement();
            //4.使用Statement对象来执行SQL语句
            String sql="select * from tb_user";
            res= sta.executeQuery(sql);
            //5.操作ResultSet结果集
            System.out.println("id\tname\tsex\teamil\tbirthday");
            while(res.next()){
                //通过列名获取指定字段的值
                int id=res.getInt("id");
                String name=res.getString("name");
                String sex=res.getString("sex");
                String email=res.getString("email");
                Date birthday=res.getDate("birthday");
                System.out.println(id+"\t"+name+"\t"+sex+"\t"+email+"\t"+ birthday);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //6.关闭连接,释放资源
            if(res!=null){res.close();}
            if(sta!=null){sta.close();}
            if(con!=null){con.close();}
        }
    }

}

JDBC概述二(JDBC编程+案例展示)_第8张图片

该案例中,首先注册了MySQL数据库驱动,通过DriverManage获取一个Connection对象,然后使用Connection对象创建一个Statement对象,Statement对象通过executeQuery(String sql)方法执行了SQL语句,并返回结果集ResultSet,接下来遍历ResultSet得到查询结果并输出,最后关闭连接,释放数据库资源。

你可能感兴趣的:(Java学习笔记,JDBC)