iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java使用JDBC连接数据库的详细步骤
  • 422
分享到

Java使用JDBC连接数据库的详细步骤

2024-04-02 19:04:59 422人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、JDBC是什么?二、使用步骤1.注册驱动2.获取连接3.获取数据库操作对象4.执行sql语句5.处理查询结果集6.释放资源上述六步连贯:第一次优化:(比较两种注册驱动的方法)

一、JDBC是什么?

JDBC 指 Java 数据库连接(Java Database Connectivity),是一种标准Java应用编程接口( JAVA api),JDBC就是一套sun公司定义的接口,JDBC本质上就是Sun公司制定的一套接口(interface)!每个数据库厂商需要实现这套接口。我们只需要调用需要即可用来连接 Java 编程语言和广泛的数据库。

JDBC API 库包含下面提到的每个任务,都是与数据库相关的常用用法。

  • 制作到数据库的连接。
  • 创建 SQL 或 Mysql 语句。
  • 执行 SQL 或 mysql 查询数据库。
  • 查看和修改所产生的记录。

从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 Java 编写不同类型的可执行文件,例如:

  1. Java 应用程序
  2. Java Applets
  3. Java Servlets
  4. Java ServerPages (jsPs)
  5. Enterprise JavaBeans (EJBs)

所有这些不同的可执行文件就可以使用 JDBC 驱动程序来访问数据库,这样可以方便的访问数据。

JDBC 具有 ODBC 一样的性能,允许 Java 程序包含与数据库无关的代码。

二、使用步骤

1.注册驱动

数据库厂商的Java程序员所写的实现类 叫做驱动 Driver

注册驱动

第一种注册方法代码如下:(不常用)

public class 注册驱动 {
    public static void main(String[] args) {
        try {
            DriverManager.reGISterDriver(new com.mysql.jdbc.Driver());
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
 
}

第二种方利用反射的特性,加载过程中注册驱动的过程。

关于反射的补充: Java中的灵魂-反射机制

关于JDBC—MySQL中以类加载的方式注册驱动(反射)详解链接:

JDBC—MySQL以类加载的方式注册驱动(反射)

class.forName(com.mysql.jdbc.Driver);

上述一行代码就可以通过反射这个动作调用类,实现Driver类的加载 但是需要使用try和catch语句块环绕

2.获取连接

要连接数据库的url---- String url="jdbc:mysql://localhost:3306/test?"+ "useUnicode=true&characterEncoding=UTF8";//防止乱码
要连接数据库的用户名---- String user="xxxx";
要连接数据库的密码---- String pass="xxxx";

接下来我们分析下url:
"jdbc(这是协议以jdbc开头):mysql(这是子协议,数据库管理系统称)://localhost(数据库来源地址):3306(目标端口)/test(要查询的表的表名)?"
"useUnicode=true&characterEncoding=UTF8";添加这个是为了防止乱码,指定使用Unicode字符集 ,且使用UTF-8来编辑。

            
 // 2、获取连接
			
            // static Connection getConnection(String url, String user, String passWord)
            String url = "jdbc:mysql://127.0.0.1:3306/hello";
            String user = "root";
            System.out.println(" ");
            String password = "rota";
            conn = DriverManager.getConnection(url,user,password);
            System.out.println("数据库连接对象 :     " + conn);	//数据库连接对象com.mysql.jdbc.JDBC4Connection@1ae369b7

3.获取数据库操作对象

            // 3、获取数据库操作对象
            // Statement 类中 createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
            stmt = conn.createStatement();
 
            // 4、执行sql语句
            // int executeUpdate(String sql)
            // 专门执行DML语句
            // 返回值是“影响数据库中的记录条数”
            int count = stmt.executeUpdate("update dept set dname = '销售部',loc = '合肥' where deptno = 20;");
            System.out.println(count == 1 ? "保存成功":"保存失败");

4.执行sql语句

            // 4、执行sql语句
            // int executeUpdate(String sql)
            // 专门执行DML语句
            // 返回值是“影响数据库中的记录条数”
            int count = stmt.executeUpdate("update dept set dname = '销售部',loc = '合肥' where deptno = 20;");
            System.out.println(count == 1 ? "保存成功":"保存失败");

5.处理查询结果集

rs = stmt.executeQuery("select empno,ename,sal from emp");
 
            while(rs.next()){
				
 
				
 
				
 
                int empno = rs.getInt("empno");
                String ename = rs.getString("ename");
                double sal = rs.getDouble("sal");
                System.out.println(empno + "," + ename + "," + (sal + 200));
            }

其中执行增删改的方法返回值是int类型

执行查询的方法返回值是操作结果集对象,即使ResultSet的实例化对象!

6.释放资源

finally {
            // 6、释放资源
            // 从小到大依次关闭
            //finally语句块内的语句一定会执行!
            if(stmt != null) {
                try	{
                    stmt.close();
                }
                catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null) {
                try	{
                    conn.close();
                }
                catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

上述六步连贯:

第一次优化:(比较两种注册驱动的方法)

 
 
 
import java.sql.*;
 
public class JDBCTest01 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;//先创建连接对象 和 操作对象 并且引用为空,是为了对象变量的生命周期不仅仅局限于try语句块内,而是在整个main方法内,方便后续finally语句块内释放资源
        try{
            // 1、注册驱动
            Driver driver = new com.mysql.jdbc.Driver();	//多态,父类型引用指向子类型对象
            DriverManager.registerDriver(driver);
 
            // 2、获取连接
			
            // static Connection getConnection(String url, String user, String password)
            String url = "jdbc:mysql://127.0.0.1:3306/hello";
            String user = "root";
            System.out.println(" ");
            String password = "rota";
            conn = DriverManager.getConnection(url,user,password);
            System.out.println("数据库连接对象 :     " + conn);	//数据库连接对象com.mysql.jdbc.JDBC4Connection@1ae369b7
 
            // 3、获取数据库操作对象
            // Statement 类中 createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
            stmt = conn.createStatement();
 
            // 4、执行sql语句
            // int executeUpdate(String sql)
            // 专门执行DML语句
            // 返回值是“影响数据库中的记录条数”
            int count = stmt.executeUpdate("update dept set dname = '销售部',loc = '合肥' where deptno = 20;");
            System.out.println(count == 1 ? "保存成功":"保存失败");
 
            // 5、处理查询结果集
 
        } catch(SQLException e) {
            e.printStackTrace();
        } finally {
            // 6、释放资源
            // 从小到大依次关闭
            //finally语句块内的语句一定会执行!
            if(stmt != null) {
                try	{
                    stmt.close();
                }
                catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null) {
                try	{
                    conn.close();
                }
                catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

第二次优化:(比较两种注册驱动的方法)

package com.zdx.source.code.jdbc;
 

import java.sql.*;
 
public class JDBCTest02 {
    public static void main(String[] args) {
        // 1、注册驱动
        // 2、获取连接
        // 3、获取数据库操作对象
        // 4、执行sql语句
        // 5、获取查询结果集
        // 6、释放资源
 
        Connection conn = null;
        Statement stmt = null;
        try {
            Driver driver = new com.mysql.jdbc.Driver();
            DriverManager.registerDriver(driver);
 
            String url = "jdbc:mysql://127.0.0.1:3306/mydatabase";
            String user = "root";
            String password = "146";
            conn = DriverManager.getConnection(url,user,password);
 
            stmt = conn.createStatement();
 
            int count = stmt.executeUpdate("delete from dept where deptno = 50");
 
            System.out.println(count == 1? "删除成功":"删除失败");
 
        } catch(SQLException e){
            e.printStackTrace();
        } finally {
            if(conn != null) {
                try {
                    conn.close();
                } catch(SQLException e){
                    e.printStackTrace();
                }
            }
            if(stmt != null) {
                try {
                    stmt.close();
                } catch(SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

第三次优化:(最佳注册驱动获取连接)

package com.zdx.source.code.jdbc;
 

 
import java.sql.*;
 
public class JDBCTest03 {
    public static void main(String[] args) {
        try{
            // 注册驱动
            Class.forName("com.mysql.jdbc.Driver");
 
            // 获取连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","root","146");
            System.out.println(conn);
 
        } catch(SQLException e){
            e.printStackTrace();
        } catch(ClassNotFoundException e){
            e.printStackTrace();
        }
    }
}

第四次优化:(使用资源绑定器)

package com.zdx.source.code.jdbc;
 

 
import java.sql.*;
import java.util.*;
 
public class JDBCTest04 {
    public static void main(String[] args) {
 
        ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
        String driver = bundle.getString("driver");
        String url = bundle.getString("url");
        String user = bundle.getString("user");
        String password = bundle.getString("password");
 
        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName(driver);
 
            conn = DriverManager.getConnection(url,user,password);
 
            stmt = conn.createStatement();
 
            int count = stmt.executeUpdate("insert into dept(deptno,dname,loc) values(50,'人事部','北京');");
 
            System.out.println(count == 1? "保存成功":"保存失败");
 
        } catch(SQLException e){
            e.printStackTrace();
        } catch(ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if(conn != null) {
                try {
                    conn.close();
                } catch(SQLException e){
                    e.printStackTrace();
                }
            }
            if(stmt != null) {
                try {
                    stmt.close();
                } catch(SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

第五次优化:(对操作结果集的处理)

package com.zdx.source.code.jdbc;
 

 
import java.sql.*;
import java.util.*;
 
public class JDBCTest05 {
    public static void main(String[] args) {
        // 1、注册驱动
        // 2、建立连接
        // 3、获取数据库操作对象
        // 4、执行sql语句
        // 5、获取查询结果集
        // 6、释放资源
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
 
        try{
            ResourceBundle rb = ResourceBundle.getBundle("jdbc");
            String driver = rb.getString("driver");
            String url = rb.getString("url");
            String user = rb.getString("user");
            String password = rb.getString("password");
 
            Class.forName(driver);
 
            conn = DriverManager.getConnection(url,user,password);
 
            stmt = conn.createStatement();
 
            rs = stmt.executeQuery("select empno,ename,sal from emp");
 
            while(rs.next()){
				
 
				
 
				
 
                int empno = rs.getInt("empno");
                String ename = rs.getString("ename");
                double sal = rs.getDouble("sal");
                System.out.println(empno + "," + ename + "," + (sal + 200));
            }
 
        } catch(Exception e){
            e.printStackTrace();
        }finally{
            if(rs != null){
                try{
                    rs.close();
                } catch (Exception e){
                    e.printStackTrace();
                }
            }
            if(stmt != null){
                try{
                    stmt.close();
                } catch (Exception e){
                    e.printStackTrace();
                }
            }
            if(conn != null){
                try{
                    conn.close();
                } catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
}

总结:

在上述五次优化代码的过程中,针对这六步

        // 1、注册驱动
        // 2、获取连接
        // 3、获取数据库操作对象
        // 4、执行sql语句
        // 5、获取查询结果集
        // 6、释放资源

第一步的注册驱动最终使用了反射,已达最优

第二步的获取连接已达最优,已经有能力去完成JDBC连接数据库的工具类的封装了

看到这里可以移步去学习—————>工具类的封装啦!

注:

第三步的获取数据库操作对象中我们是使用Statement接口

public interface Statement extends Wrapper, AutoCloseable 

还可以优化成为PreparedStatement

public interface PreparedStatement extends Statement

在实际开发过程中由于PreparedStatement能防止注入,且预先编译SQL语句的特性使得程序健壮性提高,所以实际开发中99.9%使用PreparedStatement。这是后话,由于封装工具类主要封装的是注册驱动,获取连接和释放资源,后续将专门写一篇博客讨论PreparedStatement

此外在实际开发中除了掌握上述六步还需要掌握事务提交回滚三部曲。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Java使用JDBC连接数据库的详细步骤

本文链接: https://www.lsjlt.com/news/161530.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java使用JDBC连接数据库的详细步骤
    目录一、JDBC是什么?二、使用步骤1.注册驱动2.获取连接3.获取数据库操作对象4.执行sql语句5.处理查询结果集6.释放资源上述六步连贯:第一次优化:(比较两种注册驱动的方法)...
    99+
    2022-11-12
  • Java连接MySQL8.0 JDBC的详细步骤(IDEA版本)
    一.导入jar包   1.下载jar包:https://dev.mysql.com/downloads/                  2.导入     在项目文件夹下新建一个名...
    99+
    2022-11-12
  • Java使用JDBC连接数据库的步骤是什么
    Java使用JDBC连接数据库的步骤是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、JDBC是什么?JDBC 指 Java 数据库连接(Java Database ...
    99+
    2023-06-22
  • Java连接Mysql数据库步骤详细讲解
    如何使用java连接mysql数据库? 使用 jdbc 连接 mysql 数据库。 详细讲解如下,请依次逐步观看,避免出错。 选择jdk版本 建议选择18以下的jdk,18版本以上可能会导致输出中文乱码。这里我们使用intellij ide...
    99+
    2023-09-03
    java mysql maven intellij-idea java-ee
  • Java连接阿里云数据库的详细步骤
    在Java编程中,连接阿里云数据库是非常常见的需求。阿里云数据库提供了丰富的功能和高性能的计算能力,能够满足各种企业级应用的需求。本文将详细介绍如何使用Java连接阿里云数据库。 一、准备工作首先,你需要在阿里云上创建一个数据库实例,并获取...
    99+
    2023-11-07
    阿里 步骤 数据库
  • 使用JDBC连接数据库的方法步骤
    这篇文章主要讲解了“使用JDBC连接数据库的方法步骤”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用JDBC连接数据库的方法步骤”吧!JDBC简介  JD...
    99+
    2022-10-18
  • JDBC连接数据库----Mysql七大步骤详解
    一、jdbc的概念         1、什么是jdbc?         JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它...
    99+
    2023-09-05
    mysql 数据库 java
  • PowerDesigner 连接MySQL数据库详细步骤
    新建一个 Physical Data ,选择自己要连接的数据库 在PowerDesigner菜单栏中,依次点击“File ->New Model->Physical Data” 点击OK 2、连接数...
    99+
    2023-09-03
    powerdesigner 数据库
  • VS2015连接Oracle数据库的详细步骤
    开发环境 宿主机:Win10 + VS2015 + ODP.Net for VS2015 虚拟机:Win7 + Oracle 11g + 桥接 配置ODP.Net 首先下载 Oracle Developer...
    99+
    2022-10-18
  • QT连接MYSQL数据库的详细步骤
     第一步要加入对应的数据库模块(sql)在工程文件(.pro)介绍几个类(也是对应的头文件)  QSqlError提供SQL数据库错误信息的类 ...
    99+
    2022-11-12
  • jdbc连接数据库的5个步骤
    推荐教程:java教程1、加载驱动  在连接数据库之前,需要加载数据库的驱动到JVM(Java虚拟机),这需要通过java.lang.Class类的静态方法forName(String className)实现.例如://加载Oracle的...
    99+
    2021-02-08
    java教程 java jdbc
  • 详细说明关于Java的数据库连接(JDBC)
    目录Java的数据库连接(JDBC)1、什么是JDBC2、JDBC的原理3、演示JDBC的使用4、数据库连接方式5、JDBC的查询6、SQL注入7、预处理查询7.1 查询 已解决注入...
    99+
    2022-11-12
  • 【Mybatis】使用mybatis框架连接mysql数据库详细步骤
        和我之前写的通过导入jdbc驱动jar包来连接mysql数据库而言,用mybatis来说可以有很多好处呀,首先mybatis,就是对jdbc的优化方案对吧,,jdbc的硬编码和一些繁琐的操作在使用mybatis的时候我就彻底抛掷脑后...
    99+
    2023-08-31
    mybatis mysql 数据库 maven java
  • 详解Java使用JDBC连接MySQL数据库
    一:什么是数据库,为什么要有数据库? 数据,数据库,数据库管理系统和数据库系统是与数据库技术密切相关的四个基本概念。 数据库相信大家都耳熟能详了,其实数据库顾名思义就是存放数据的仓库...
    99+
    2022-11-12
  • 使用mybatis框架连接mysql数据库的超详细步骤
    目录第一步 在pom.xml中写好依赖坐标第二步  mybatis的核心配置文件第三步 写好实体类第四步 XXXMapper.xml第五步 连接mysql数据库第六步&nb...
    99+
    2023-05-17
    mybatis连接mysql mybatis连接数据库 mybatis连接数据库代码
  • Java使用JDBC连接数据库
    目录一、JDBC简介二、JDBC中常用类和接口1、驱动程序管理类(DriverManager)2、声明类(Statement)3、数据库连接类 (Connection)4、结果集合类...
    99+
    2022-11-12
  • idea社区版连接mysql数据库——详细步骤
    idea社区版连接mysql数据库 1、社区版本的IDEA没有直接的database供我们使用,我们需要下载安装一个Database Navigator插件。2.install成功后,点击ok...
    99+
    2023-09-02
    数据库 intellij-idea mysql
  • python中jdbc连接数据库的步骤是什么
    在Python中使用JDBC连接数据库的步骤如下:1. 安装JDBC驱动程序:对于不同的数据库,需要安装相应的JDBC驱动程序。可以...
    99+
    2023-10-30
    jdbc python 数据库
  • 非常详细的Django连接mysql数据库步骤记录
    目录一.修改数据库连接二.安装数据库驱动三.创建表并同步到mysql数据库:总结一.修改数据库连接 打开项目,在settings.py文件中是否有以下内容: 以上内容是创建django项目的时候是自动创建的。这个是告诉...
    99+
    2022-10-26
  • jdbc连接数据库代码和步骤是什么
    这篇文章给大家介绍jdbc连接数据库代码和步骤是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、加载JDBC驱动程序 JDBC连接数据库之前,首先需要将要连接的数据库驱动加载到...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作