Java 数据库连接(JDBC)的相关总结

 更新时间:2021年03月24日 08:31:42   作者:拾阶求上  
这篇文章主要介绍了Java 数据库连接(JDBC)的相关总结,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下

Java 数据库连接(Java DataBase Connectivity,缩写JDBC)是官方(sun公司)定义的一套操作所有关系型数据库的规则(即接口)。
各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

一、JDBC API 概述

JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中),主要包括(下面的接口,需驱动程序提供者来具体实现):

  • DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。
  • Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求,返回相应的数据库连接(Connection)。
  • Connection:与数据库连接,负责与进行数据库间通讯,SQL执行、事务处理都是在某个特定Connection环境中进行的。
  • Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。
  • PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)。
  • CallableStatement:用以调用数据库中的存储过程。
  • SQLException:代表在数据库连接的建立和关闭和SQL语句的执行过程中发生了例外情况(即错误)。

二、JDBC 和 数据库建立连接的过程

2.1、装载驱动程序

Java 程序和数据库建立连接,首先需要下载好对应数据库的驱动程序包,并放置在程序的依赖库中。
程序将依赖库中的驱动加载到程序中的方式非常简单,使用Class.forName()即可。

假如需要导入的驱动包为 mysql-connector-java-5.1.37-bin.jar,则装载驱动的方式:
Class.forName("com.mysql.jdbc.Driver");
在驱动程序的文档中会告诉你应该使用的类名。
在装载驱动的过程中,会执行驱动程序中的部分代码(静态代码块);实现驱动与 DriverManager的绑定。

static {
 try {
  java.sql.DriverManager.registerDriver(new Driver());
 } catch (SQLException E) {
  throw new RuntimeException("Can't register driver!");
 }
 }

注意:mysql5之后的驱动jar包可以省略注册驱动(forName)的步骤。Jar包中内置包含处理了此过程。

2.2、获取数据库连接

下一步就是用适当的驱动程序类与 DBMS 建立一个连接。
下列代码是一般的做法:

Connection con = DriverManager.getConnection(url,user,password);

方法:static Connection getConnection(String url, String user, String password)
说明:返回一个打开的连接,你可以使用此连接创建 JDBC statements 并发送 SQL 语句到数据库。
参数:
    * url:指定连接的路径;如:jdbc:mysql://localhost:3306/db3
    * user:用户名
    * password:密码

如果你装载的驱动程序识别了提供给 DriverManager.getConnection 的 JDBC URL ,那个驱动程序将根据 JDBC URL 建立一个到指定 DBMS 的连接。
正如名称所示,DriverManager 类在幕后为你管理建立连接的所有细节。
除非你是正在写驱动程序,你可能无需使用此类的其它任何方法,一般程序员需要在此类中直接使用的唯一方法是 DriverManager.getConnection。

2.2.1、Connection:数据库连接对象介绍

Connection 对象与数据库连接;负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。

  1. 产生用以执行SQL指令的 Statement、PreparedStatement 对象。
  2. 事务管理中:setAutoCommit(boolean autoCommit)开启事务、commit()提交事务、rollback()回滚事务。

2.3、创建 JDBC Statement 对象

Statement 是执行SQL 的对象;其用于把 SQL 语句发送到 DBMS。不同的SQL语句使用不同的 Statement 对象的方法,发送到 DBMS中。

Statement stmt = con.createStatement();

2.4、执行SQL 语句 (Statement对象方法使用)

不同的 SQL 语句需要使用不同的 Statement 对象方法。

  1. boolean execute(String sql):可以执行任意的sql(了解 )。
  2. int executeUpdate(String sql):执行DML(insert、update、delete)语句、DDL(create,alter、drop)语句。
  3. ResultSet executeQuery(String sql):执行DQL(select)语句

其中 executeUpdate() 方法的返回值为影响的行数;可以通过这个影响的行数判断DML语句是否执行成功 ;返回值>0的则执行成功,反之,则失败。

执行DML语句

String sql = "insert into account values(null,'王五',3000)";
int count = stmt.executeUpdate(sql);//影响的行数

执行DQL语句

ResultSet rs = stmt.executeQuery("SELECT user_name, age FROM student");
//如果有数据,rs.next()返回true
while(rs.next()){
System.out.println(rs.getString("user_name")+" 年龄:"+rs.getInt("age"));
}

2.4.1、ResultSet 结果集对象,封装查询结果

java.sql.ResultSet 接口表示一个数据库查询的结果集;一个ResultSet对象具有一个游标指向当前行的结果集。
最初,光标被置于第一行之前;调用 next() 方法将光标移动到下一行;当 ResultSet 对象没有下一行时,next() 方法返回 false。

一般使用方法:

while(rs.next()){
 //获取数据
 int id = rs.getInt(1);
 String name = rs.getString("name");
 double balance = rs.getDouble(3);
 System.out.println(id + "---" + name + "---" + balance);
}

getXxx(参数):获取数据
  * Xxx:代表数据类型如:int getInt(),String getString() ...
  * 参数:
      1. int:代表列的编号,从1开始   如: getString(1)
      2. String:代表列名称。 如: getDouble("balance")

2.5、释放资源

SQL 语句执行完成后,需要是否创建的资源对象。包括连接对象、Statement对象和ResultSet 对象等。

以上就是Java 数据库连接(JDBC)的相关总结的详细内容,更多关于Java 数据库连接(JDBC)的资料请关注脚本之家其它相关文章!

相关文章

  • Java实现读取Word模板文档并替换内容生成新文档

    Java实现读取Word模板文档并替换内容生成新文档

    在实际开发中,经常会遇到需要根据 Word 模板生成特定文档的需求,下面小编就来为大家介绍一下如何使用 Apache POI 库来读取 Word 模板文档,然后替换其中的指定内容最后生成新的文档吧
    2025-02-02
  • Mybatis批量修改的操作代码

    Mybatis批量修改的操作代码

    这篇文章主要介绍了Mybatis批量修改的操作代码,包括整体批量修改的详细代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2017-09-09
  • springboot单独使用feign简化接口调用方式

    springboot单独使用feign简化接口调用方式

    这篇文章主要介绍了springboot单独使用feign简化接口调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 详解Java高阶语法Volatile

    详解Java高阶语法Volatile

    这篇文章主要介绍了Java高阶语法Volatile,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java集成和使用dl4j实现通过扫描图片识别快递单信息

    Java集成和使用dl4j实现通过扫描图片识别快递单信息

    这篇文章主要为大家详细介绍了Java如何使用DL4J搭建一个简单的图像识别模型,并将其集成到Spring Boot后端中从而实现通过扫描图片识别快递单信息,需要的可以参考下
    2024-12-12
  • SpringBoot使用@Validated处理校验的方法步骤

    SpringBoot使用@Validated处理校验的方法步骤

    @Validated 注解的主要目的是启用和利用 Spring 的验证框架,它可以用于类上也可以用于方法参数上,本文给大家介绍了SpringBoot使用@Validated优雅的处理校验的方法步骤,通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • Java 基础:string中的compareTo方法

    Java 基础:string中的compareTo方法

    这篇文章主要介绍了Java 基础:string中的compareTo方法,文章围绕string中的compareTo方法的相关资料展开文章详细内容,希望对待大家有所帮助
    2021-12-12
  • java中元素排序Comparable和Comparator的区别

    java中元素排序Comparable和Comparator的区别

    本文主要介绍了java中元素排序Comparable和Comparator的区别,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Eclipse安装配置方法图文教程

    Eclipse安装配置方法图文教程

    这篇文章主要为大家详细介绍了Eclipse安装配置方法图文教程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 基于Java创建XML(无中文乱码)过程解析

    基于Java创建XML(无中文乱码)过程解析

    这篇文章主要介绍了基于Java创建XML(无中文乱码)过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论