JDBC连接数据库详解

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,所以接下来的演示就以此来进行。
在这里插入图片描述

输入后点击搜索。
在这里插入图片描述、
点击第一个链接
在这里插入图片描述
便可以在下面的驱动包列表中选择自己需要的jar包了。

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

这里博主由于使用的是MySQL8,选择8.0.x中的版本
在这里插入图片描述
然后点击进入选择下载
在这里插入图片描述
下载完成就要把jar包导入项目啦!

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

首先先创建一个新的Java项目,不需要勾选任何框架,直接Next
在这里插入图片描述
一路Next,起好项目名称,点击Finish这个项目就算创建好啦!
在这里插入图片描述
接下来找到刚刚下载的jar包,黏贴到项目的lib目录下(如果没有lib目录,就自己创建一个文件夹,命名为lib)
在这里插入图片描述
最后一步,右击jar包选择Add as Library,然后JDBC的准备工作中Java的部分就算完成啦!
在这里插入图片描述
博主就不多赘述建立数据库中建表的过程了,因为这是另外一项技术了,和JDBC关系不大,这里直接用博主已经建立好的数据库中的表来讲解。

这是一张用户表,接下来的编程演示就基于这张表
在这里插入图片描述
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查询语句的讲解,如果说这篇文章有让你学到一定的知识的话,不妨点个赞和关注,让博主能够看到,如果讲解中有什么错误和疏忽,也劳烦在评论中指出或提问,博主会第一时间进行更新和答复,谢谢!

发布了8 篇原创文章 · 获赞 10 · 访问量 323

猜你喜欢

转载自blog.csdn.net/weixin_44018540/article/details/103903257