15.2 JDBC数据库编程2

15.2.1  数据库访问步骤

使用JDBC API连接和访问数据库,一般分为以下5个步骤:

(1) 加载驱动程序

(2) 建立连接对象

(3) 创建语句对象

(4) 获得SQL语句的执行结果

(5) 关闭建立的对象,释放资源

下面将详细描述这些步骤 

15.2.2  加载驱动程序

        要使应用程序能够访问数据库,必须首先加载驱动程序。加载驱动程序一般使用Class类的forName()静态方法,格式如下:

        public static Class<?> forName(String className)

        该方法返回一个Class类的对象。参数className为字符串表示的完整驱动程序类的名称,若找不到驱动程序将抛出ClassNotFoundException异常
        对于不同的数据库,驱动程序的类名不同。下面几行代码分别是加载MySQL数据库、Oracle数据库和PostgreSQL数据库驱动程序

//加载MySQL数据库驱动程序
Class.forName("com.mysql.jdbc.Driver");
//加载Oracle数据库驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
//加载PostgreSQL数据库驱动程序
Class.forName("org.postgresql.Driver");

另一种加载驱动程序的方法是使用DriverManager类的静态方法registerDriver()注册驱动程序,如下所示。

        DriverManager.registerDriver(new org.postgresql.Driver());

其中,org.postgresql.Driver为PostgreSQL的驱动程序类

        注:使用JDBC4.0及以上的版本,可以采用动态加载驱动程序的方法,即不需要使用Class.forName()方法加载驱动程序。只需将包含JDBC驱动程序的JAR文件添加到CLASSPATH中。例如,对MySQL数据库,在mysql-connector-java-5.1.39-bin.jar中META-INF/services/java.sql.Driver文件的内容是org.mysql.jdbc.Driver
        动态加载驱动程序的优点是,不仅少写几行代码,而且不需要将JDBC驱动程序类名硬编码在程序中。如果需要更新驱动程序 ,只需用新的JAR文件替换旧的文件即可。新的类名也不必与旧的类名匹配。

15.2.3  建立连接对象

1.DriverManager类

        DriverManager类是JDBC的管理层,作用于应用程序和驱动程序之间。DriverManager类跟踪可用的驱动程序,并在数据库和驱动程序之间建立连接。

        建立数据库连接的方法是调用DriverManager类的getConnection()静态方法,该方法有下面两种格式:

        puiblic static Conneciton getConnection(String dburl);

        puiblic static Conneciton getConnection(String dburl,String user,String password).

        参数dburl表示JDBC URL,user表示数据库用户名,password表示口令。DriverManager类维护一个注册的Driver类列表。调用该方法,DriverManager类试图从注册的驱动程序中选择一个合适的驱动程序,然后建立与给定数据库的连接。如果不能建立连接将抛出SQLException异常

2.数据库URL

        数据库URL与一般的URL不同,用来标识数据源,这样驱动程序就可以与它建立连接。下面是数据库URL的标准语法,包括由冒号分割的3个部分:

        jdbc:<subprotocol>:<subname>

        其中,jdbc表示协议,数据库URL的协议总是jdbc:subprotocol表示子协议,为驱动程序或数据库连接机制的名称,子协议名通常为数据库厂商名,如mysql,oracle,postgresql等;subname为子名称,表示数据库标识符,该部分内容随数据库驱动程序的不同而不同

String url = "jdbc:mysql://localhost:3306/haozihua?useSSL=false";
Connection conn = DriverManager.getConnection(url, user, password);

        如代码所示, localhost为本机IP地址,也可以更改为127.0.0.1;3306为MySQL数据库服务器使用的端口号;数据库名为haozihua,用户名为root,密码为root.

3.Connection对象

        Connection对象代表与数据库的连接,也就是在加载的驱动程序与数据库之间建立连接。一个应用程序可以与一个数据库建立一个或多个连接,或与多个数据库建立连接
        得到连接对象后,可以调用Connection接口的方法创建SQL语句对象以及在连接对象上完成各种操作,下面是Connection接口的常用方法.

  • public Statement createStatment():创建一个Statement对象,使用该方法执行不带参数的SQL语句。
  • public PreparedStatement prepareStatement(String sql):使用给定的SQL命令创建一个预编译语句对象,使用该方法可执行带参数的SQL语句
  • public void setAutoCommit(boolean autoCommit):设置通过该连接对数据库的更新操作是否自动提交,默认情况为true
  • public boolean getAutoCommit():返回当前连接是否为自动提交模式
  • public void commit():提交对数据库的更新操作,使更新写入数据库。只有当setAutoCommit()为false时,才应该使用该方法。
  • public void rollback():回滚对数据库的更新操作。只有当setAutoCommit()为false时,才应该使用该方法。
  • public void close():关闭该数据库连接。在使用连接后应该关闭,否则连接会保持一段较长的时间,直至超时
  • public void isClosed():返回该连接是否已被关闭

15.2.4  创建语句对象

SQL语句对象有3种:Statement、PreparedStatement和CallableStatement。通过调用Connection接口的相应方法可以得到这3种语句对象,本节只讨论Statement对象
Statement接口对象主要用于执行一般的SQL语句,常用方法如下:

  • public ResultSet executeQuery(String sql):执行SQL查询语句,参数sql为用字符串表示的SQL查询语句,查询结果以ResultSet对象返回
  • public int executeUpdate(String sql):执行SQL更新语句,参数sql用来指定SQL语句更新,该语句可以是INSERT、DELETE、UPDATE语句或无返回的SQL语句,如SQL DDL语句CREATE TABLE。该方法返回值是更新的行数,如果语句没有返回则返回值为0 
  • public boolean execute(String sql):执行可能有多个结果集的SQL语句,sql为任何的SQL语句。如果语句执行的第一个结果为ResultSet对象,该方法返回true,否则返回false
  • public Connection getConnection():返回产生该语句的连接对象
  • public void close():释放Statement对象占用的数据库和JDBC资源

执行SQL语句使用Statement对象的方法。对于查询语句,调用executeQuery(String sql)方法,该方法的返回类型为ResultSet,再通过调用ResultSet的方法可以对查询结果的每行进行处理。

String sql="SELECT * FROM department";
ResultSet rst=stmt.executeQuery(sql);
while(rst.next()){
System.out.println(rst.getString(1)="\t")
}

对于更新语句,如INSERT、UPDATE、DELETE,需使用executeUpdate(String sql)方法。该方法返回值为整数,用来只是被影响行的数目 

15.2.5  ResultSet对象

        ResultSet对象表示SQL查询语句得到的记录集合,称为结果集。结果集一般是一个记录表,其中包含列标题和多个记录行,一个Statement对象一个时刻只能打开一个ResultSet对象。
        每个结果集对象都有一个游标。所谓游标(cursor)是结果集的一个标志或指针。对新产生的ResultSet对象,游标指向第一行的前面,可以调用ResultSet对象的方法,对查询结果处理。1.ResultSet的常用方法
ResultSet接口提供了对结果集操作的方法,下面是一个常用的方法。
public boolean next() throws SQLException
        该方法将游标从当前位置向下移动一行。第一次调用next()方法将使第一行成为当前行,以后调用游标依次向后移动。如果方法返回true,说明新行是有效的行;若返回false,说明已无记录。
        可以使用getXxx()方法检索当前行的列值由于结果集列的数据类型不同,所以应该使用不同的getXxx()方法获得列值
        

15.2.4  关闭有关对象

        数据库访问结束后,应当关闭有关对象。可以使用每种对象的close()方法关闭对象,也可以使用Java7的try-with-reso urces结构实现资源的自动关闭。
        

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

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

相关文章

山东省行政执法证照片要求及图像处理方法

在山东省&#xff0c;行政执法证是执法人员身份的重要标识&#xff0c;其照片的规范性对于证件的有效性至关重要。本文将详细介绍山东省行政执法证照片的要求&#xff0c;并提供使用手机相机拍照的实用方法&#xff0c;以确保照片符合标准。 一、山东省行政人员执法证照片拍摄要…

百度静态资源瓦片nginx直接显示完整案例

案例地址&#xff1a;https://download.csdn.net/download/jinhuding/89733763 访问显示效果&#xff1a;(根据瓦片地址直接显示) http://172.16.39.203:8099/tiles/

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站&#xff0c;手机流量可以访问IPV6网络的服务&#xff0c;为什么不在电脑搭建Home Assistant&am…

视频号黄金时间

现在刷视频的人越来越多&#xff0c;看视频号的也很多&#xff0c;那我们应该怎样发视频号呢&#xff1f;发朋友圈都有黄金时间&#xff0c;那视频号有吗&#xff1f; 答案是&#xff1a;有的。 不同时间段发什么内容的视频&#xff0c;可以引流更多精准的流量&#xff0c;可…

【JAVA入门】Day34 - Stream流

【JAVA入门】Day34 - Stream流 文章目录 【JAVA入门】Day34 - Stream流一、Stream 流的作用和使用步骤1.Stream流的创建&#xff0c;数据的添加2. Stream流的中间方法3. Stream流的终结方法 Stream 流有什么作用&#xff1f;我们看一个例子&#xff1a; 【练习】需求&#xff…

记录一下linux安装nginx,也是很简单了啦

1、下载nginx 官网下载nginx&#xff1a;http://nginx.org/&#xff0c;这里很简单&#xff0c;下载自己想要的版本就行&#xff0c;这里不罗嗦 1、进入home目录&#xff0c;建一个文件夹nginx rootroot ~]# cd /home rootroot home]# mkdir nginx rootroot home]# cd /nginx2…

Java语言程序设计——篇十三(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

系统架构师考试学习笔记第四篇——架构设计实践知识(21)安全架构设计理论与实践

本章考点&#xff1a; 第21课时主要学习信息系统中安全架构设计的理论和工作中的实践。根据考试大纲,本课时知识点会涉及案例分析题和论文题(各占25分),而在历年考试中,综合知识选择题目中也有过诸多考查。本课时内容侧重于知识点记忆;,按照以往的出题规律,安全架构设计基础知识…

SOMEIP_ETS_100: SD_ClientServiceActivate_no_FindServices_in_Main_Phase

测试目的&#xff1a; 确保客户端服务模式仅在启动阶段发送FindService消息&#xff0c;在主阶段不发送。 描述 本测试用例旨在验证DUT在客户端服务模式下的行为&#xff0c;即它应当在启动阶段发送FindService消息&#xff0c;并在进入主阶段后停止发送。 测试拓扑&#x…

【触想智能】工业一体机在物流领域上的四大应用分析

随着物流业的快速发展&#xff0c;工业一体机在物流领域上的应用越来越普遍。工业一体机是一种高级智能设备&#xff0c;是多种技术的综合应用&#xff0c;包括机械、电子、计算机、通讯等。 在物流行业中&#xff0c;工业一体机可以发挥其先进的技术和功能&#xff0c;提高物流…

基于单片机的仔猪喂饲系统设计

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设…

【网络安全 | 渗透工具】Cencys+Shodan使用教程

原创文章,不得转载。 文章目录 Cencys准备语法全文搜索字段和值搜索通配符搜索布尔逻辑搜索嵌套搜索时间相关搜索范围搜索双引号 (")转义序列和保留字符Censys 搜索语言中的主机查询查看主机搜索结果Censys 搜索语言中的证书查询查看证书搜索结果生成报告其余Shodan准备使…

【Java数据结构】泛型的进阶部分(泛型通配符)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

MT6895(天玑8100)处理器规格参数_MTK联发科平台方案

MT6895平台 采用台积电5nm工艺&#xff0c;与天玑 8000 相比性能提升 20% &#xff0c;搭载4 个 2.85GHz A78 核心 4 个 2.0GHz A55 核心&#xff0c;CPU能效比上一代提高 25% 。GPU 采用了第三代的Valhall Arm Mali-G610 MC6架构&#xff0c;拥有6核心&#xff0c;搭配天玑81…

逻辑函数的公式化简法

目录 逻辑函数的公式化简法 并项法 吸收法 消去法 配项法 习题1 习题2 逻辑函数的公式化简法 并项法 B或B非结果为1&#xff0c;这样可以消去B&#xff0c;将两项合并为一项。 用于消去变量。 吸收法 1或上一个变量结果为1&#xff0c;1与上A变量结果为A变量。 1或任何…

将BAT脚本设置为Windows开机自启动

1. 打开“运行”对话框 方法&#xff1a;按下键盘上的 Win R 快捷键&#xff0c;这会立即打开“运行”对话框。输入命令&#xff1a;在“运行”对话框中&#xff0c;输入 shell:startup 并按回车键。 2. 访问“启动”文件夹 目的&#xff1a;shell:startup 命令将直接打开当…

2. Python之注释及缩进以及print和input函数使用

一. Python代码中的注释及缩进 Python中注释有单行注释&#xff0c;多行注释&#xff0c;声明注释 单行注释使用符号#&#xff0c;从#开始&#xff0c;后面到本行末尾都是注释内容。多行注释可以使用’‘’ ‘’三个引号&#xff0c;三个引号内的内容都是注释声明注释&#x…

解决:Module build failed (from ./node_modules/sass-loader/dist/cjs.js)问题

一、问题 Module build failed (from ./node_modules/sass-loader/dist/cjs.js): Error: Cannot find module sass 二、解决方法 1.清除缓存 npm cache clean --force2.重构项目 npm install 3.更新&#xff08;获取最新的&#xff09;node-sass和sass-loader依赖包 npm …

MySQL数据库启用安全审计功能5.7版本

MySQL数据库启用安全审计功能5.7版本&#xff0c;需要使用插件server_audit.dllmysql安装是没有自带这个插件的需要去下载&#xff0c;也可以使用我上传的 操作步骤&#xff1a; 1.把插件复制放到自己安装的mysql下的插件位置&#xff1a;比如我的 C:\zz\ProgramFiles\MySQL\…

HarmonyOs 应用基础--ArkTS-核心-基础

目录 八. ArkTS-语句-类型进阶与渲染控制 1. 对象进阶 1.1. 定义对象数组 1.2. 使用对象数组 2. 渲染控制 - ForEach 2.1. ForEach语法 2.2. ForEach使用优化代码 2.3. 案例-学生档案 实现思路 3. Math对象 4. 综合案例 -- 抽奖卡案例 4.1. 初始页面布局&#xff08;静…