CUMT--Java--JDBC编程

目录

一、JDBC简介

二、数据库访问 

1、加载数据库驱动

2、建立数据连接

3、创建Statement对象

4、执行SQL语句

5、访问结果集 

三、MetaData接口

1、DatabaseMetaData接口

2、ResultSetMetaData接口

四、事务

1、JDBC中的事务

2、保存点

3、批量更新


一、JDBC简介

(1)概述

        JDBC是一种执行SQL语句的Java API,可以通过JDBC连接到关系数据库,并通过SQL结构化查询语言完成对数据库的增删改查操作。

        JDBC访问数据库时需要完成三件工作:建立与数据库的连接、执行SQL语句、获取执行结果。

(2)JDBC驱动

        数据库驱动程序是JDBC程序和数据库之间的转换层

        数据库驱动程序负责将JDBC调用映射成特定的数据库调用

(3)JDBC API

        JDBC API提供了一组用于与数据库进行通信的接口和类,定义在java.sql中

名称描述
DriverManager用于管理JDBC驱动的服务类,负责加载和卸载各种驱动程序,建立数据库的连接并获取连接对象
Connection用于数据库连接,每一个Connection对象代表一个数据库连接会话
Statement用于执行SQL语句的工具接口,当执行查询语句时返回一个查询到的结果集
PreparedStatement用于执行预编译的SQL语句
CallableStatement用于调用SQL存储过程
ResultSet表示结果集,包含访问查询结果的各种方法

        在JDBC编程中,易引发SQLException异常,需要进行异常处理,所以SQLException也是JDBC编程中其他异常类型的基础。

        在JDBC中执行SQL查询语句方式有一般查询(Statement)、参数查询(PreparedStatement)、存储过程(CallableStatement)三种。


二、数据库访问 

使用JDBC访问数据库的步骤:

        加载数据库驱动->建立数据连接->创建Statement对象->执行SQL语句->访问结果集

1、加载数据库驱动

        使用Class类的forName() 方法来加载数据库驱动

Class.forName("com.mysql.jdbc.Driver")             //加载mysql驱动
Class.forName("oracle.jdbc.driver.OracleDriver")   //或加载Oracle驱动

2、建立数据连接

        使用DriverManager.getconnection(String url,String user,String pass)方法建立数据库连接。

Class.forName("oracle.jdbc.driver.OracleDriver")
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:8001:orcl"     //URL链接字符串"root"                                      //用户名"admin"                                     //密码
)

3、创建Statement对象

        通过Connection对象获得Statement的方法有:

createStatement()创建一个基本的Statement对象
prepareStatement(String sql)根据参数化的SQL语句创建一个预编译的PreparedStatement对象
prepareCall(String sql)根据SQL语句来创建一个CallableStatement对象

        创建Statement实例:

Statement smt = conn.createStatement(); 

4、执行SQL语句

        执行SQL语句返回一个结果集ResultSet。

        执行SQL语句三种方法:

executeQuery()只能执行查询语句
executeUpdate()和executeLargeUpdate()用于执行DML(插入、增加、删除)和DDL(创建表、删除表)语句
execute()可以执行任何SQL语句

         执行SQL语句的实例:

ResultSet rs = smt.executeQuery("SELECT sno,name,age FROM student");

5、访问结果集 

        由于SQL的查询结果使用ResultSet进行封装,所以使用getXXX("列名"或列索引)方法访问结果集中的数据时,可通过列索引或列名来获取游标所指行中的列数据,XXX代表的是获取的数据类型。

        循环输出结果集中的数据:

While(rs.next()){System.out.println(rs.getString(1))           //循环输出第一列数据
}While(rs.next()){System.out.println(rs.getString("username"))  //循环输出username列数据
}

        当数据库操作执行完毕或退出应用前,应该执行关闭操作,关闭顺序为:

(1)关闭结果集:rs.close()

(2)关闭Statement对象:stmt.close()

(3)关闭连接:conn.close()

三、MetaData接口

1、DatabaseMetaData接口

        DatabaseMetaData接口用于获取数据库的相关信息,通过Connection接口的getMetaData()方法进行获取。

        DatabaseMetaData的常用方法如下:

        实例:

DBUtil db = new DBUtil();                  //通过工具类获取数据库连接
Connection conn=db.getConnection();        //建立数据连接
DatabaseMetaData dmd = conn.getMetaData();
System.out.println("数据库产品名:"+dmd.getDatabaseProductName());      //输出数据库产品名
System.out.println("数据库版本号:"+dmd.getDatabaseProductVersion());   //版本号
System.out.println("驱动类型名:"+dmd.getDriverName());                 //驱动类型名
db.closeAll();                             //关闭连接

2、ResultSetMetaData接口

        ResultSetMetaData接口用来获取结果集的结构,如结果集的列数和列名。

        ResultSetMetaData的常用方法如下:

        实例:

DBUtil db=new DBUtil();
db.getConnection();
ResultSet rs=db.executeQuery(selectSql,null);   //结果集初始化,并执行选择sql
ResultSetMetaData rsmd=rs.getMetaData();        //接口初始化
System.out.println("总共有:"+rsmd.getColumnCount()+"列");  //返回结果集列数
db.closeAll();

四、事务

1、JDBC中的事务

        事务:由一步或几步数据库操作序列组成的逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。

        事务四个特性:原子性、一致性、隔离性、持久性。

        在JDBC中对事物操作提供了支持,由Connection提供,在默认情况下进行自动提交,可以使用Connection对象中的setAutoCommit()方法开启或者关闭自动提交模式。

conn.setAutoCommit(false);    //关闭自动提交

        当所有SQL语句都执行成功后,调用Connection的commit()方法来提交事务。

conn.commit();

        任意一条SQL语句执行失败,调用Connection的rollback()方法来回滚事务

conn.rollback();

         当遇到未处理的SQLException异常时,事务也会自动回滚,若捕获该异常,则显式调用rollback()进行回滚。

2、保存点

        设置保存点:

Savepoint=conn.setSavepoint();

         回滚保存点:

conn.rollback(Savepoint);

3、批量更新

        批量更新:多条SQL语句被作为一批操作同时收集、提交,通过DatabaseMetaData的supports()查看底层数据库是否支持批量更新。

Statement stat=conn.createStatement();    //创建Statement对象
stat.addBatch("INSERT INTO stu(name,id,sex,age) VALUES("张三","001","男",20)");    //收集多条SQL语句
stat.addBatch("INSERT INTO stu(name,id,sex,age) VALUES("李四","002","男",21)");
stat.executeBatch();                      //同时执行多条SQL语句

参考书籍:《Java 8 基础应用与开发》QST青软实训编

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/234974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA】重力反弹,反弹高次一次比一次低

本来是想实现泡泡屏保(javascript实现漂亮的气泡碰撞效果(Chrome浏览器下更佳) 下载-脚本之家)的,还未实现 import javax.swing.*; import java.awt.*; import java.util.LinkedList; import java.util.Random;class Bubble {public static Image image;public int…

轮滑加盟培训机构管理系统源码开发方案

一、项目背景与目标 (一)项目背景 随着轮滑运动的普及和市场需求的增加,轮滑加盟培训机构逐渐兴起。这些机构面临着学员管理、课程排班、教师管理等多方面的挑战。为了提高管理效率和服务质量,需要开发一套专门针对轮滑加盟培训…

FormData文件上传多文件上传

一、简介 ​ 通常情况下,前端在使用post请求提交数据的时候,请求都是采用application/json 或 application/x-www-form-urlencoded编码类型,分别是借助JSON字符串来传递参数或者keyvalue格式字符串(多参数通过&进行连接&#…

大数据分析22、23真题回忆

2022 学长描述 1. 一个很简单的据估计 2. 算一个决策树 3. Cypher图 4.Hadoop和Spark的区别 2023 真题回忆 1. 大数据分析的定义 说出大数据分析三个层次 2.大数据分析流程 预处理部分包含哪几个步骤 3.Spark核心部件和应用库有哪些 并简要说明功能 4. 主成分分析和因…

HTML5+CSS3小实例:纯CSS实现锚点平滑过渡

实例:纯CSS实现锚点平滑过渡 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"&…

【无语】Microsoft Edge 浏览器不显示后台返回的数值数据

Microsoft Edge 禁用 JSON 视图 写在前面禁用 JSON 视图 写在前面 遇到一个有意思的事情&#xff0c;在用 Microsoft Edge 浏览器发送请求测试时发现&#xff0c;后端返回的数值数据没有正常展示&#xff0c;而是类似查看源码的结果&#xff0c;只显示了一个行号1&#xff0c;…

最优化理论复习--对偶单纯形方法及灵敏度分析

对偶单纯形方法 定义&#xff1a;设 x ( 0 ) x^{(0)} x(0) 是(L)问题的基本解&#xff08;不一定是可行解&#xff08;极点&#xff09;&#xff09;&#xff0c;如果它的对偶问题的解释可行的&#xff0c;则称 x ( 0 ) x^{(0)} x(0) 为原问题的对偶可行基本解 从而衍生出结…

Chappyz 生态迎重磅利好:多链应用程序启动、100% 收入共享计划开启

“首款由人工智能驱动的社区建设工具 Chappyz&#xff0c;即将在 12 月 21 日推出全新的多链平台并向社区开放&#xff0c;同时制定了生态收入 100% 向 Stakers 共享的计划&#xff0c;这不仅是 Chappyz 生态的一个全新进展&#xff0c;也是 Chappyz 生态发展的重磅利好。” 构…

0137 - 跳转控制语句 break、continue、return

文章目录 1 break1.1 基本介绍1.2 基本语法1.3 注意事项和细节说明 2 continue2.1 基本介绍2.2 基本语法 3 return 1 break 1.1 基本介绍 break 语句用于终止某个语句块的执行&#xff0c;一般使用在 switch 或者循环[for , while , do-while]中 1.2 基本语法 { ……break…

新时代体育场馆的未来之路——气膜体育馆

近年来&#xff0c;我国正全面贯彻实施全民健身国家战略&#xff0c;秉持“发展群众体育&#xff0c;服务健康中国”的理念&#xff0c;深入推动群众参与的体育活动&#xff0c;努力实现全民健身与全民健康的深度融合发展。在这一大潮中&#xff0c;体育场馆建设成为业内的一项…

tensorflow入门

一、怎样入手TensorFlow TensorFlow是一个用于机器学习和深度学习的开源框架&#xff0c;它提供了一种灵活的方式来构建和训练神经网络模型。以下是一些TensorFlow框架入门的建议&#xff1a; 学习Python语言&#xff1a;TensorFlow主要使用Python语言进行开发&#xff0c;因此…

欧美电商平台Depop如何入驻?

对标美国二手闲鱼平台Mercia,PoshMark、东南亚Etsy&#xff0c;Depop是英国的一个面向创意人群的二手时尚市场&#xff0c;类似于Instagram&#xff0c;但更专注于买卖二手服装、配饰和艺术品。 有研究显示,由于购物预算减少,高达65%的受访者表示乐意在圣诞节购买或收到二手礼…

JDK bug:ciObjectFactory::create_new_metadata:原因完全解析

文章目录 1、问题2.详细日志2.关键日志3.结论4.JDK&#xff1a;bug最终bug链接&#xff1a; 京东遇到过类似bug各位大佬如果有更详细的解答可以留言。 1、问题 服务不通&#xff0c;接口404&#xff0c;查看日志有一下截图&#xff0c;还有一个更详细的日志 2.详细日志 # #…

cpp_04_类_对象_this指针_常对象_常(成员)函数

1 类 1.1 类的定义 类的作用是抽象事物&#xff08;抽取事物特征&#xff09;的规则。 类的外化表现是用户自定义的复合数据类型&#xff08;包括成员变量、成员函数&#xff09;&#xff1a; 成员变量用于表达事物的属性&#xff0c;成员函数用于表达事物的行为。 类的表现…

智慧食堂餐卡充值文件生成器使用说明

智慧食堂餐卡充值文件生成器 下载地址&#xff1a; https://download.csdn.net/download/boysoft2002/88646277 或者百度网盘下载&#xff1a; https://pan.baidu.com/s/16cxOa5aq0CU0T0xOr2A7-A 操作使用说明 一、文件结构 下载.rar文件后&#xff0c;释放到非系统盘符的…

TensorFlow(2):Windows安装TensorFlow

1 安装python环境 这一步请自行安装&#xff0c;这边不做介绍。 2 安装anaconda 下载路径&#xff1a;Index of /&#xff0c;用户自行选择自己的需要的版本。 3 环境配置 3.1 anaconda环境配置 找到设置&#xff0c;点击系统->系统信息->高级系统设置->环境变量…

ThinkPad E550c

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

基于YOLOv5的吸烟检测系统设计与实现

一、项目背景 吸烟检测作为保障公共健康和环境安全的重要任务之一&#xff0c;一直备受关注。传统的吸烟检测方法往往依赖人工判断&#xff0c;存在准确性低和实时性差的问题。为了解决这些问题&#xff0c;本项目基于深度学习技术进行了吸烟检测系统的设计与实现&#xff0c;…

buuctf-Misc 题目解答分解91-93

91.[SUCTF2018]followme 下载完就是一个流量包 &#xff0c;用wireshark 打开 直接导出 http对象 这里面 有很多的这样的文件 里面都是参数 直接搜索 关键字 suctf grep -r "SUCTF" 得到flag SUCTF{password_is_not_weak} 92.[MRCTF2020]CyberPunk 用notepad 打开…

【Ehcache技术专题】「入门到精通」带你一起从零基础进行分析和开发Ehcache框架的实战指南(5-检索开发)

系列文章目录 本系列课程主要针对于Ehcache缓存框架功能的开发实践全流程技术指南&#xff01; 第一节&#xff1a;Ehcache缓存框架的基本概念和简介第二节&#xff1a;Ehcache缓存框架的配置分析和说明第三节&#xff1a;Ehcache缓存框架的缓存方式的探索第四节&#xff1a;E…