Java中JDBC的事务问题

Java事务详解:概念、特性与实现 事务(Transaction)是数据库操作的基本逻辑单元,它是由一系列操作组成的不可分割的工作单元。在Java应用中,事务通常指的是一组要么全部执行成功,要么全部不执行的数据库操作序列。事务的经典示例:银行转账// 从A账户扣款// 向B账户加款这两个操作必须作为一个整体执行,要么全部成功,要么全部失败,不能出现A账户扣款成功但B账户未收到款的情况。 阅读详情

事务

l  事务的四大特性:ACID;

l  mysql中操作事务

l  jdbc中操作事务

事务概述

为了方便演示事务,我们需要创建一个account表:

CREATE TABLE account(

         id INT PRIMARY KEY AUTO_INCREMENT,

         NAME VARCHAR(30),

         balance NUMERIC(10.2)

);

 

INSERT INTO account(NAME,balance) VALUES('zs', 100000);

INSERT INTO account(NAME,balance) VALUES('ls', 100000);

INSERT INTO account(NAME,balance) VALUES('ww', 100000);

 

SELECT * FROM account;

 

什么是事务

银行转账!张三转帐10000块到李四的账户,这其实需要两条SQL语句:

1.给张三的账户减去10000元;

2.给李四的账户加上10000元。

如果在第一条SQL语句执行成功后,在执行第二条SQL语句之前,程序被中断了(可能是抛出了某个异常,也可能是其他什么原因),那么李四的账户没有加上10000元,而张三却减去了10000元。这肯定是不行的!

事务中的多个操作,要么完全成功,要么完全失败!不可能存在成功一半的情况!也就是说给张三的账户减去10000元如果成功了,那么给李四的账户加上10000元的操作也必须是成功的;否则给张三减去10000元,以及给李四加上10000元都是失败的!

事务的四大特性(ACID)

  常见关于事务面试题!

事务的四大特性是:

l  原子性(Atomicity):事务中所有操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败。

l  一致性(Consistency):事务执行后,数据库状态与其它业务规则保持一致。如转账业务,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的。

l  隔离性(Isolation):隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰。

l  持久性(Durability):一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据。

MySQL中的事务

在默认情况下,MySQL每执行一条SQL语句,都是一个单独的事务。如果需要在一个事务中包含多条SQL语句,那么需要开启事务和结束事务。

l  开启事务:starttransaction;

l  结束事务:commit或rollback。

在执行SQL语句之前,先执行strat transaction,这就开启了一个事务(事务的起点),然后可以去执行多条SQL语句,最后要结束事务,commit表示提交,即事务中的多条SQL语句所做出的影响会持久化到数据库中。或者rollback,表示回滚,即回滚到事务的起点,之前做的所有操作都被撤消了!

下面演示张三给李四转账10000元的示例:

START TRANSACTION;

UPDATE account SET balance=balance-10000 WHERE id=1;

UPDATE account SET balance=balance+10000 WHERE id=2;

ROLLBACK;

START TRANSACTION;

UPDATE account SET balance=balance-10000 WHERE id=1;

UPDATE account SET balance=balance+10000 WHERE id=2;

COMMIT;

START TRANSACTION;

UPDATE account SET balance=balance-10000 WHERE id=1;

UPDATE account SET balance=balance+10000 WHERE id=2;

quit;

 

JDBC事务

在jdbc中处理事务,都是通过Connection完成的!

同一事务中所有的操作,都在使用同一个Connection对象!

 

JDBC中的事务

Connection的三个方法与事务相关:

l  setAutoCommit(boolean):设置是否为自动提交事务,如果true(默认值就是true)表示自动提交,也就是每条执行的SQL语句都是一个单独的事务,如果设置false,那么就相当于开启了事务了;con.setAutoCommit(false)表示开启事务!

l  commit():提交结束事务;con.commit();表示提交事务

l  rollback():回滚结束事务。con.rollback();表示回滚事务

 

jdbc处理事务的代码格式:

try {

 con.setAutoCommit(false);//开启事务

 con.commit();//try的最后提交事务

} catch() {

  con.rollback();//回滚事务

}

    public void transfer(boolean b) {

       Connection con = null;

       PreparedStatement pstmt = null;      

       try {

           con = JdbcUtils.getConnection();

           //手动提交

           con.setAutoCommit(false);          

           String sql = "update account set balance=balance+? where id=?";

           pstmt = con.prepareStatement(sql);          

           //操作

           pstmt.setDouble(1, -10000);

           pstmt.setInt(2, 1);

           pstmt.executeUpdate();          

           // 在两个操作中抛出异常

           if(b) {

              throw new Exception();

           }          

           pstmt.setDouble(1, 10000);

           pstmt.setInt(2, 2);

           pstmt.executeUpdate();          

           //提交事务

           con.commit();

       } catch(Exception e) {

           //回滚事务

           if(con != null) {

              try {

                  con.rollback();

              } catch(SQLException ex) {}

           }

           throw new RuntimeException(e);

       } finally {

           //关闭

           JdbcUtils.close(con, pstmt);

       }

    }

 

保存点

保存点是JDBC3.0的东西!当要求数据库服务器支持保存点方式的回滚。

校验数据库服务器是否支持保存点!

boolean b = con.getMetaData().supportsSavepoints();

 

保存点的作用是允许事务回滚到指定的保存点位置。在事务中设置好保存点,然后回滚时可以选择回滚到指定的保存点,而不是回滚整个事务!注意,回滚到指定保存点并没有结束事务!!!只有回滚了整个事务才算是结束事务了!

Connection类的设置保存点,以及回滚到指定保存点方法:

l  设置保存点:Savepoint setSavepoint();

l  回滚到指定保存点:void rollback(Savepoint)。

 

    /*

     * 李四对张三说,如果你给我转1W,我就给你转100W。

     * ==========================================

     *

     * 张三给李四转1W(张三减去1W,李四加上1W)

     * 设置保存点!

     * 李四给张三转100W(李四减去10W,张三加上10W)

     * 查看李四余额为负数,那么回滚到保存点。

     * 提交事务

     */

    @Test

    public void fun() {

       Connection con = null;

       PreparedStatement pstmt = null;

      

       try {

           con = JdbcUtils.getConnection();

           //手动提交

           con.setAutoCommit(false);

          

           String sql = "update account set balance=balance+? where name=?";

           pstmt = con.prepareStatement(sql);

          

           //操作1(张三减去1W)

           pstmt.setDouble(1, -10000);

           pstmt.setString(2, "zs");

           pstmt.executeUpdate();

          

           //操作2(李四加上1W)

           pstmt.setDouble(1, 10000);

           pstmt.setString(2, "ls");

           pstmt.executeUpdate();

          

           // 设置保存点

           Savepoint sp = con.setSavepoint();

          

           //操作3(李四减去100W)

           pstmt.setDouble(1, -100000);

           pstmt.setString(2, "ls");

           pstmt.executeUpdate();     

          

           //操作4(张三加上100W)

           pstmt.setDouble(1, 100000);

           pstmt.setString(2, "zs");

           pstmt.executeUpdate();

          

           //操作5(查看李四余额)

           sql = "select balance from account where name=?";

           pstmt = con.prepareStatement(sql);

           pstmt.setString(1, "ls");

           ResultSet rs = pstmt.executeQuery();

           rs.next();

           double balance = rs.getDouble(1);

      //如果李四余额为负数,那么回滚到指定保存点

           if(balance < 0) {

              con.rollback(sp);

              System.out.println("张三,你上当了!");

           }

          

           //提交事务

           con.commit();

       } catch(Exception e) {

           //回滚事务

           if(con != null) {

              try {

                  con.rollback();

              } catch(SQLException ex) {}

           }

           throw new RuntimeException(e);

       } finally {

           //关闭

           JdbcUtils.close(con, pstmt);

       }

    }

 

事务隔离级别

事务的并发读问题

l  脏读:读取到另一个事务未提交数据;

l  不可重复读:两次读取不一致;

l  幻读:读到另一事务已提交数据。

 

并发事务问题

因为并发事务导致的问题大致有5类,其中两类是更新问题,三类是读问题。

l  脏读(dirty read):读到另一个事务的未提交更新数据,即读取到了脏数据;

l  不可重复读(unrepeatable read):对同一记录的两次读取不一致,因为另一事务对该记录做了修改;

l  幻读(虚读)(phantom read):对同一张表的两次查询不一致,因为另一事务插入了一条记录;


脏读

事务1:张三给李四转账100元

事务2:李四查看自己的账户


l  t1:事务1:开始事务

l  t2:事务1:张三给李四转账100元

l  t3:事务2:开始事务

l  t4:事务2:李四查看自己的账户,看到账户多出100元(脏读)

l  t5:事务2:提交事务

l  t6:事务1:回滚事务,回到转账之前的状态

不可重复读

事务1:酒店查看两次1048号房间状态

事务2:预订1048号房间


l  t1:事务1:开始事务

l  t2:事务1:查看1048号房间状态为空闲

l  t3:事务2:开始事务

l  t4:事务2:预定1048号房间

l  t5:事务2:提交事务

l  t6:事务1:再次查看1048号房间状态为使用

l  t7:事务1:提交事务

对同一记录的两次查询结果不一致!


幻读

事务1:对酒店房间预订记录两次统计

事务2:添加一条预订房间记录


l  t1:事务1:开始事务

l  t2:事务1:统计预订记录100条

l  t3:事务2:开始事务

l  t4:事务2:添加一条预订房间记录

l  t5:事务2:提交事务

l  t6:事务1:再次统计预订记录为101记录

l  t7:事务1:提交

  对同一表的两次查询不一致!

不可重复读和幻读的区别:

l  不可重复读是读取到了另一事务的更新;

l  幻读是读取到了另一事务的插入(MySQL中无法测试到幻读);

四大隔离级别

4个等级的事务隔离级别,在相同数据环境下,使用相同的输入,执行相同的工作,根据不同的隔离级别,可以导致不同的结果。不同事务隔离级别能够解决的数据并发问题的能力是不同的。


1 SERIALIZABLE(串行化)

l  不会出现任何并发问题,因为它是对同一数据的访问是串行的,非并发访问的;

l  性能最差;


2 REPEATABLE READ(可重复读)(MySQL)

l  防止脏读和不可重复读,不能处理幻读问题;

l  性能比SERIALIZABLE好


3 READ COMMITTED(读已提交数据)(Oracle)

l  防止脏读,没有处理不可重复读,也没有处理幻读;

l  性能比REPEATABLE READ好

4 READ UNCOMMITTED(读未提交数据)

l  可能出现任何事务并发问题

l  性能最好


MySQL的默认隔离级别为REPEATABLE READ,这是一个很不错的选择吧!

MySQL隔离级别

MySQL的默认隔离级别为Repeatable read,可以通过下面语句查看:

select @@tx_isolation


也可以通过下面语句来设置当前连接的隔离级别:

set transaction isolationlevel [4先1]


JDBC设置隔离级别

con.setTransactionIsolation(int level)

参数可选值如下:

l  Connection.TRANSACTION_READ_UNCOMMITTED;

l  Connection.TRANSACTION_READ_COMMITTED;

l  Connection.TRANSACTION_REPEATABLE_READ;

l  Connection.TRANSACTION_SERIALIZABLE。

事务总结:

l  事务的特性:ACID;

l  事务开始边界与结束边界:开始边界(con.setAutoCommit(false)),结束边界(con.commit()或con.rollback());

l  事务的隔离级别: READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE。多个事务并发执行时才需要考虑并发事务。

jdbc 练习作业 jdbc 练习作业 jdbc 练习作业 jdbc 练习作业 jdbc 练习作业 jdbc 练习作业 jdbc 练习作业 立即下载

相关推荐

统信UOS V20 安装mysql5.7.42详细教程

到bin/下,执行下面的命令,初始化mysql服务信息,得到数据库的初始密码,实际如果目录不一样记得换成自己的目录。下载后通过远程将安装包上传至服务器,我这里将安装包上传至/usr/local/mysql 下。ps:这时候如果还是不能远程访问的话,可能是防火墙的原因,命令行执行以下命令即可。再次登录,发现缺少 libtinfo.so.5文件,再次建立软连接。登录,发现报错,提示缺少libncurses.so.5文件,使用。创建 /var/lib/ 下mysql目录。登录成功,修改密码,设置远程访问。

为谁伫立在风中 1万+

java jdbc事务处理_JDBC事务处理机制探秘

Java中的事务处理一般情况下,J2EE应用服务器支持JDBC事务、JTA(Java Transaction API)事务、容器管理事务。一般情况下,***不要在程序中同时使用上述三种事务类型,比如在JTA事务中嵌套JDBC事务。第二方面,事务要在尽可能短的时间内完成,不要在不同方法中实现事务的使用。下面我们列举两种JDBC事务处理方式。1、JavaBean中使用JDBC事务处理在JDBC中怎样将...

weixin_35120608的博客 240

某讯天御滑块验证码逆向实战:从参数解析到环境对抗

本文详细解析了某讯天御滑块验证码的逆向工程实战技巧,从关键参数解析到浏览器环境模拟对抗。重点介绍了collect、eks等参数的逆向思路,以及如何通过puppeteer等工具补全环境检测,帮助开发者有效突破验证码防护。文章还提供了常见错误解决方案和性能优化建议,是验证码逆向领域的实用指南。

weixin_29325007的博客 437

JDBC 编程有哪些不足之处,MyBatis 是如何解决这些问题的?

JDBC 编程有哪些不足之处,MyBatis 是如何解决这些问题的

qqfig的专栏 665

数字IC笔记-低功耗技术

传统的降低Power的方法主要有: 1.门控时钟技术(clock gating) 2.多阈值电压技术(MultiShreshold) 3.动态电压频率调节技术(DVFS) 目前有以下几种低功耗技术: 1.多电压技术(Multi-Voltage) 2.MTCOMS Power Gating 技术(多阈值功耗控制技术),比如基带部分中的2G、3G、CDMA、LTE等通过awake—>sleep—>awake的方式间歇式的打开或关断其电源,power gating 可以完全关掉dynamic的pow

sinat_41774721的博客 1932

XGBoost的简单安装及入门使用

XGBoost安装及简单入门 XGBoost支持多种操作系统,如Windows, Linux, MacOS等,并支持多种语言版本,如Python, R, Scale, Java等。XGBoost的安装方式一般有两种,一种是直接通过pip安装(适合用于Python),另外一种是通过源码编译安装 1、通过pip安装 通过pip安装Python包既简单又方便,只需执行如下的命令: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xgboost 使用

qq_41513230的博客 3万+

JAVA JDBC 练习题

1单选(2分) Java中,JDBC是指( ) 得分/总分 A. Java程序与数据库连接的一种机制 2.00/2.00 B. Java程序与浏览器交互的一种机制 C. Java类库名称 D. Java类编译程序 正确答案:A你选对了 2单选(2分) 以下对JDBC事务描述错误的是() 得分/总分 A. JDBC事务可以保证操作的完整性和一致性 B. JDBC事务是由Connection发起的,并...

zxw_zxw_zxw_zxw的博客 6056

Freemarker整合poi导出带有图片的Excel教程

Freemarker整合poi导出带有图片的Excel教程 https://blog.youkuaiyun.com/x541211190/article/details/105675771根据此人博客可完成此功能,但原文中有一处错误需要纠正,当单元格合并时,计算起始单元格有错误。 源代码: /** * 构造合并单元格集合 * * @param createRowIndex: * @param cellRangeAddresses: * @param startIndex: * @param c

weixin_39403349的博客 1002

MySQL__事务(Transaction)

文章目录基本概念四大特性事务事务控制语句   基本概念 一个事务是一个完整的业务逻辑单元,不可再分!(比如银行转账,加钱和减钱同属一个业务逻辑单元 )   事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。   事务用来管理 insert,update,delete 语句(DML·)   四大特性 一般来说,事务是必须满足4个条件(ACID) 原子性(Atomicity,或称不可分割性): 一个事务(transactio

Pinker_Q 1929

久坐不慌,健康护航 —— 智能震动提醒坐垫的设计与实现

硬件核心:选用 ESP32 为主控,HX711 + 应变片实现精准压力检测,8050 三极管驱动震动马达,锂电池 + TP4056 满足便携供电需求;软件逻辑:核心是 “压力阈值判断 + 时间计时”,达到久坐阈值后触发震动提醒,流程图清晰体现了循环检测、状态重置的核心逻辑;代码特性:代码注释完善,阈值可灵活调整,支持串口调试,新手可直接编译烧录并根据实际场景校准。

weixin_42300449的博客 399

【Windows Server 2019】存储服务器的配置和管理——iSCSI的安装和配置(下)

博文介绍了如何使用Windows 10 和 ESXi 验证iSCSI服务器部署成功以及如何管理iSCSI服务 。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 8000

【Java 进阶篇】JDBC 管理事务详解

在数据库中,事务是一组 SQL 操作,这些操作被视为一个单一的工作单元。原子性(Atomicity):事务是原子的,它要么全部成功执行,要么全部失败回滚。如果其中一个操作失败,整个事务都将失败,不会留下部分修改。一致性(Consistency):事务在执行前后,数据库从一个一致的状态转移到另一个一致的状态。这意味着事务必须遵循数据库的完整性约束,如主键、唯一性约束等。隔离性(Isolation):多个事务可以并发执行,但彼此之间不能互相干扰。一个事务的修改在提交之前对其他事务是不可见的。

繁依Fanyi的博客 2504

SIMULINK开发项目实例 1000 例专栏之第960例--基于电力系统稳定性的建模与仿真场景:-含分布式电源的配电网电压稳定性研究

间歇性与随机性:例如,太阳能依赖于日照强度,风能依赖于风速,这使得它们的输出功率具有不确定性。逆变器接口:大多数分布式电源通过逆变器接入电网,这对电网的动态响应特性产生了影响。位置分散:通常分布在用户侧或靠近负荷中心的位置。本文详细介绍了如何使用Simulink结合Simscape Electrical 构建一个用于研究含分布式电源配电网电压稳定性的模型,并提供了详细的仿真流程说明。

xiaoheshang_123的博客 153

java sqlserver 事务_关于通过JDBC调用SQLServer 存储过程出现“服务器无法继续该事务的问题”----[SQLServer]The server failed to resum...

有个客户跟我说,他们把weblogic从923升级到923以后,总是提示failed to resume transaction的。当时没有看到任何信息,以为跟JTA超时有关,让客户把JTA timeout加大,同时把下面的设置加入jdbc-config.xml中。客户反馈过来说:还是不行。 :(truetrue比较郁闷,后来想想,客户的jdbc是使用non-XA的driver, 同时将emula...

weixin_34478373的博客 705

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java-JDBC操作事务,高级java面试问题大全及答案大全

这里是小编拿到的学习资源,其中包括“中高级Java开发面试高频考点题笔记300道.pdf”和“Java核心知识体系笔记.pdf”文件分享,内容丰富,(img-u3UIriBu-1711050249227)]// 关闭自动提交(开启事务)

2301_77118221的博客 462

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JAVA解决JDBC的自动提交带来的数据事务出错问题-----JDBC

JAVA解决JDBC的自动提交带来的数据事务出错问题-----JDBC

在经历了无数个黑夜之后,我决定自己成为太阳 551

JAVA事务浅谈

1.什么是JAVA事务? 通常的观念认为,事务仅与数据库相关。 事务必须服从ISO/IEC所制定的ACID原则。ACID是**原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)**的缩写。 事务的原子性:表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。 事务的一致性:表示当事务执行失败时,所有被该事务影响的数据...

程序小白进阶之路 253

Java中事务总结详解

Java中事务总结详解 1.什么是JAVA事务? 通常的观念认为,事务仅与数据库相关。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。 事务的原子性:表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。 事务的一致性:表示当事务执行失败...

dency 569

Java事务学习

Java事务学习 1 什么是事务 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。 事务的原子性:表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。 事务的一致性:表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。 事务的隔离性:表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。 事务的持久性:表示已提交的数据在事

qq_43038960的博客 640

Mysql--事务及并发问题

数据库事务是一组数据库操作,它们被视为一个单独的工作单元,要么全部成功,要么全部失败。事务可以确保数据库的完整性和一致性,以及提供并发控制机制。

宁zz的博客 1721

JDBC事务

java的事务处理,是这么一回事,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而就有了事务的回滚,取消先前的操作..... JavaBean中使用JDBC方式进行事务处理 public int delete(int sID) {   dbc = new DataBaseConn

fanlulu2015的博客 441

JDBC数据库事务

JDBC数据库事务 数据库事务介绍 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。 事务处理(事务操作):保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。 为确保数据库中数据...

staticJAVA_HOME的博客 450

java jdbc 事务_Java中的JDBC事务解析

Java中的JDBC事务解析事务事务是一步或多步组成操作序列组成的逻辑执行单元,这个序列要么全部执行,要么则全部放弃执行。事务的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(IsoIation)和持续性(Durability)原子性(Atomicity):事务应用最小的执行单元,不可再分。是事务中不可再分的最小逻辑执行体。一致性(Consistency):事务的...

weixin_39575410的博客 254

Java并发编程之事务管理详解

本文深入探讨Java中的事务管理机制,涵盖JDBC事务、Spring事务及其ACID特性。首先解析事务四大特性(原子性、一致性、隔离性、持久性),然后对比JDBC原生事务和Spring声明式事务的实现方式,重点分析@Transactional注解的使用场景和传播行为。针对常见事务失效问题(如自调用、异常捕获等)提供解决方案,并讨论并发环境下的脏读、幻读等问题及隔离级别选择。最后介绍Spring Boot事务配置、多线程事务处理方案,以及分布式事务的2PC、TCC等实现模式,为高并发系统提供完整的事务管理实践

BUG糕手的博客 805

java jdbc mysql_java jdbc

Java工程师必知词汇:JDBC|名词定义|Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。JDBC是面向关系型数据库的。J...文章千言万语乐此不疲2020-02-12128浏览量JDBC(二)驱动...

weixin_36184307的博客 308
上一篇: Java中IO流的设计模式
下一篇: Java中JDBC的数据库连接池
午-夜
博客等级 码龄12年 95粉丝 133原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值