CUMT--Java--JDBC编程

2023-12-21 01:44
文章标签 java jdbc 编程 cumt

本文主要是介绍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青软实训编

这篇关于CUMT--Java--JDBC编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/518264

相关文章

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Springboot控制反转与Bean对象的方法

《Springboot控制反转与Bean对象的方法》文章介绍了SpringBoot中的控制反转(IoC)概念,描述了IoC容器如何管理Bean的生命周期和依赖关系,它详细讲解了Bean的注册过程,包括... 目录1 控制反转1.1 什么是控制反转1.2 SpringBoot中的控制反转2 Ioc容器对Bea

Spring Cloud Hystrix原理与注意事项小结

《SpringCloudHystrix原理与注意事项小结》本文介绍了Hystrix的基本概念、工作原理以及其在实际开发中的应用方式,通过对Hystrix的深入学习,开发者可以在分布式系统中实现精细... 目录一、Spring Cloud Hystrix概述和设计目标(一)Spring Cloud Hystr

Spring Boot整合消息队列RabbitMQ的实现示例

《SpringBoot整合消息队列RabbitMQ的实现示例》本文主要介绍了SpringBoot整合消息队列RabbitMQ的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装Spring

springMVC返回Http响应的实现

《springMVC返回Http响应的实现》本文主要介绍了在SpringBoot中使用@Controller、@ResponseBody和@RestController注解进行HTTP响应返回的方法,... 目录一、返回页面二、@Controller和@ResponseBody与RestController

JAVA集成本地部署的DeepSeek的图文教程

《JAVA集成本地部署的DeepSeek的图文教程》本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的... 目录一、下载部署DeepSeek1.下载ollama2.下载DeepSeek-R1模型并启动 二、J

springboot rocketmq配置生产者和消息者的步骤

《springbootrocketmq配置生产者和消息者的步骤》本文介绍了如何在SpringBoot中集成RocketMQ,包括添加依赖、配置application.yml、创建生产者和消费者,并展... 目录1. 添加依赖2. 配置application.yml3. 创建生产者4. 创建消费者5. 使用在

Spring Retry 实现乐观锁重试实践记录

《SpringRetry实现乐观锁重试实践记录》本文介绍了在秒杀商品SKU表中使用乐观锁和MybatisPlus配置乐观锁的方法,并分析了测试环境和生产环境的隔离级别对乐观锁的影响,通过简单验证,... 目录一、场景分析 二、简单验证 2.1、可重复读 2.2、读已提交 三、最佳实践 3.1、配置重试模板

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J