JDBC是什么?

在java web中,数据库是不可缺少的一部分,而数据库的连接通常使用java完成,因此便有了JDBC技术(java database connectivity 数据库连接技术)。从此,数据库与网页之间便有了联系,变得密不可分。

这篇文章先从基础的开始,先不涉及网页,从一个Java应用的JDBC方法来入门,会更好地看清JDBC的操作,那就开始吧!

JDBC的编写流程

简介

通常来说JDBC的操作一般分为以下几步:
1.导入需要操作的数据库jdbc驱动包和创建数据库
2.将jdbc包加载至JVM中
3.通过DriverManager类中getConnection方法获取到对应数据库连接对象
4.编写需要操作的sql语句
5.通过连接对象创建编译对象
6.接受并处理返回的结果
7.释放资源

看到上面的这些步骤,从来没有接触过JDBC的小伙伴可能就懵了,这些都是什么呀?别怕!其实JBDC是非常死板的别写格式,接下来博主就一步一步地来讲解这些步骤。

具体实现

1.第一步:导入需要操作的数据库jdbc驱动包和创建数据库

主要的数据库主要有SQL Server、MySQL、Oracle这样三种,需要去找寻对应的jdbc驱动jar包。

方法:推荐前往Maven仓库寻找,里面各个版本主流的ar包都能够找到,较为方便。链接为Maven中央仓库

博主使用的是MySQL8,所以接下来的演示就以此来进行。

dba连接数据库 java 数据库jdbc连接_mysql

输入后点击搜索。

dba连接数据库 java 数据库jdbc连接_数据库_02


点击第一个链接

dba连接数据库 java 数据库jdbc连接_dba连接数据库 java_03


便可以在下面的驱动包列表中选择自己需要的jar包了。

JDBC驱动包必须要和自己使用的数据库版本对应,否则会报错。

这里博主由于使用的是MySQL8,选择8.0.x中的版本

dba连接数据库 java 数据库jdbc连接_jdbc_04


然后点击进入选择下载

dba连接数据库 java 数据库jdbc连接_mysql_05


下载完成就要把jar包导入项目啦!

博主使用的是IntelliJ IDEA,如果有使用eclipse的小伙伴,操作流程是一样的,也可以参考。

首先先创建一个新的Java项目,不需要勾选任何框架,直接Next

dba连接数据库 java 数据库jdbc连接_数据库_06


一路Next,起好项目名称,点击Finish这个项目就算创建好啦!

dba连接数据库 java 数据库jdbc连接_jdbc_07


接下来找到刚刚下载的jar包,黏贴到项目的lib目录下(如果没有lib目录,就自己创建一个文件夹,命名为lib)

dba连接数据库 java 数据库jdbc连接_数据库_08


最后一步,右击jar包选择Add as Library,然后JDBC的准备工作中Java的部分就算完成啦!

dba连接数据库 java 数据库jdbc连接_dba连接数据库 java_09


博主就不多赘述建立数据库中建表的过程了,因为这是另外一项技术了,和JDBC关系不大,这里直接用博主已经建立好的数据库中的表来讲解。这是一张用户表,接下来的编程演示就基于这张表

dba连接数据库 java 数据库jdbc连接_jdbc_10


2.第二步:代码实现

a.查询类功能

import java.sql.*;
	
	public class JDBC {
    public static void main(String[] args) {
        //声明变量
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            //将jdbc包加载至JVM中
            Class.forName("com.mysql.cj.jdbc.Driver");
            //声明连接数据库的url(本处使用的是本地的MySQL数据库)
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC", "root", "******");
            //编写需要操作的sql语句
            String sql = "select * from user";
            //通过连接对象创建编译对象
            preparedStatement = connection.prepareStatement(sql);
            //向编译对象发出sql指令
            resultSet = preparedStatement.executeQuery();
            //接受并处理返回的结果
            while (resultSet.next()) {
                System.out.println(resultSet.getInt("id")+ " " + resultSet.getString("username") + " " + resultSet.getString("password"));
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            //释放资源
            if(resultSet!=null){
                try{
                    resultSet.close();
                }catch(SQLException e){
                    e.printStackTrace();
                }
            }
            if(preparedStatement!=null){
                try{
                    preparedStatement.close();
                }catch(SQLException e){
                    e.printStackTrace();
                }
            }
            if(connection!=null){
                try{
                    connection.close();
                }catch(SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }

以上的代码可以总结为以下的模板,需要修改的地方博主帮大家用高亮打出,方便小伙伴阅读

import java.sql.*;
public class JDBC {
 public static void main(String[] args) {
 //声明变量
 Connection connection = null;
 PreparedStatement preparedStatement = null;
 ResultSet resultSet = null;try {
 //将jdbc包加载至JVM中
 Class.forName(“驱动类名”);
 //声明连接数据库的url(本处使用的是本地的MySQL数据库)
 connection = DriverManager.getConnection(“需连接的数据库url”,“用户名”,“密码”);
 //编写需要操作的sql语句
 String sql = “编写需要操作的sql语句”;
 //通过连接对象创建编译对象
 preparedStatement = connection.prepareStatement(sql);
 //向编译对象发出sql指令
 resultSet = preparedStatement.executeQuery();
 //接受并处理返回的结果
 while (resultSet.next()) {
 System.out.println(输出要输出的值);
 }
 }catch(Exception e){
 e.printStackTrace();
 }finally {
 //释放资源
 if(resultSet!=null){
 try{
 resultSet.close();
 }catch(SQLException e){
 e.printStackTrace();
 }
 }
 if(preparedStatement!=null){
 try{
 preparedStatement.close();
 }catch(SQLException e){
 e.printStackTrace();
 }
 }
 if(connection!=null){
 try{
 connection.close();
 }catch(SQLException e){
 e.printStackTrace();
 }
 }
 }
 }


b.插入修改类功能

import java.sql.*;

public class JDBC {
    public static void main(String[] args) {
        //声明变量
        Connection connection = null;
        Statement statement = null;

        try {
            //将jdbc包加载至JVM中
            Class.forName("com.mysql.cj.jdbc.Driver");
            //声明连接数据库的url(本处使用的是本地的MySQL数据库)
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC", "root", "******");
            //编写需要操作的sql语句
            String sql = "insert into user(id,username,password) values(6,'admin','admin')";
            //通过连接对象创建编译对象
            statement = connection.createStatement();
            //向编译对象发出sql指令
            statement.executeUpdate(sql);
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            //释放资源
            if(statement!=null){
                try{
                    statement.close();
                }catch(SQLException e){
                    e.printStackTrace();
                }
            }
            if(connection!=null){
                try{
                    connection.close();
                }catch(SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

以上的代码可以总结为以下的模板,需要修改的地方博主帮大家用高亮打出,方便小伙伴阅读

import java.sql.*;
public class JDBC {
 public static void main(String[] args) {
 //声明变量
 Connection connection = null;
 Statement statement = null;
 try {
 //将jdbc包加载至JVM中
 Class.forName(“驱动类名”);
 //声明连接数据库的url(本处使用的是本地的MySQL数据库)
 connection = DriverManager.getConnection(“需连接的数据库url”,“用户名”,“密码”);
 //编写需要操作的sql语句
 String sql = “编写需要操作的sql语句”;
 //通过连接对象创建编译对象
 statement = connection.createStatement();
 //向编译对象发出sql指令
 statement.executeUpdate(sql);
 }catch(Exception e){
 e.printStackTrace();
 }finally {
 //释放资源
 if(statement!=null){
 try{
 statement.close();
 }catch(SQLException e){
 e.printStackTrace();
 }
 }
 if(connection!=null){
 try{
 connection.close();
 }catch(SQLException e){
 e.printStackTrace();
 }
 }
 }
 }
 }

这样一看,是不是发现每次编写JDBC只有这么一点点地方需要编写呢,其他的都是固定的模板,套用就完事了!
所以说,JDBC并不难,准备上手的小伙伴也不要害怕呢,多多练习就OK啦!

附加资料

三种主流关系型数据库的驱动包名称和驱动类名

数据库

驱动类名

url

MySQL

com.mysql.jdbc.Driver (MySQL5及以下) com.mysql.cj.jdbc.Driver(MySQL6及以上)

jdbc:mysql://IP地址:端口号(默认3306)/数据库名字

SQL Sever

com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc:microsoft:sqlserver://IP地址:端口号(默认1433);DatabaseName=数据库名

Oracle

oracle.jdbc.driver.OracleDriver

dbc:oracle:thin:@IP地址:端口号(默认1521):数据库名

结语

这篇博客主要介绍了JDBC技术的实现,这项技术牵涉到了数据库中的sql查询语言以及编写代码使用的java语言,可能有的小伙伴想学java却没有学过数据库方面的相关知识,所以博主之后会更新关于数据库sql查询语句的讲解,如果说这篇文章有让你学到一定的知识的话,不妨点个赞和关注,让博主能够看到,如果讲解中有什么错误和疏忽,也劳烦在评论中指出或提问,博主会第一时间进行更新和答复,谢谢!