15.2 JDBC数据库编程2

news2024/9/21 12:47:19

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.coloradmin.cn/o/2123561.html

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

相关文章

开发中的网络问题逻辑推理分析

基于TCP/IP的逻辑推理&#xff0c;大部分软件从业人员都不是很懂&#xff0c;导致很多问题都被误认为诡异问题。有些人是惧怕TCP/IP网络书籍中的复杂知识内容&#xff0c;有的是被wireshark[1]显示的深红色内容所干扰。 经典案例1&#xff1a; 例如有一个DBA遇到了性能问题&a…

基于SpringBoot+Vue+MySQL的流浪猫狗宠物救助救援网站管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今社会&#xff0c;随着宠物数量的激增及人们关爱动物意识的提升&#xff0c;流浪猫狗问题日益严峻。为解决这一问题&#xff0c;构建一套高效、便捷的流浪猫狗宠物救助救援网站管理系统显得尤为重要。本系统基于SpringBoot…

在VB.net中,TimeSpan有什么属性与方法

标题 在VB.net中&#xff0c;TimeSpan有什么属性与方法 正文 在 VB.NET 中&#xff0c;TimeSpan 结构表示时间间隔&#xff0c;即一段时间&#xff0c;而不表示特定的时间点。TimeSpan 提供了多种属性来获取时间间隔的各个组成部分&#xff0c;以及一些方法来操作这些时间间隔。…

Linux下载新版火狐浏览器,替换默认火狐浏览器,保留桌面任务栏图标快捷方式

Linux下载新版火狐浏览器&#xff0c;替换默认火狐浏览器&#xff0c;保留桌面任务栏图标快捷方式 方式一 替换默认程序入口 下载官方浏览器 火狐浏览器下载地址【官网】 &#xff08;搞清楚你的Linux系统是32位还是64位&#xff09; 解压下载的程序包&#xff0c;建议放到/o…

Leetcode面试经典150题-74.搜索二维矩阵

解法都在代码里&#xff0c;不懂就留言或者私信 二分查找&#xff0c;比较简单 class Solution {/**解题思路&#xff1a;每一行有序、每一列也有序&#xff0c;只是整体不是严格有序的&#xff0c;那我们需要找一个点&#xff0c;只能往两个方向走&#xff0c;往一个方向走是…

【docker】命令之镜像操作

一、前言 之前讲解了docker的安装&#xff0c;这里呢接着上面的内容来介绍docker中的相关命令的操作。这里我们更具一个案例就是启动一个nginx&#xff08;是一个在我们应用市场存在的一个软件包&#xff09;,并尝试对其进行修改&#xff0c;然后发布出去&#xff0c;让别人都能…

Guitar Pro 8.2中文解锁版下载及2024最新图文安装教程

Guitar Pro 8.2中文解锁版是一款深受广大音乐人和音乐爱好者喜爱的吉他打谱软件&#xff0c;帮助所有吉他爱好者学习、绘谱、创作&#xff0c;使用非常简单只需直接在五线谱或六线谱上编辑&#xff0c;即可轻松谱写自己的乐章。 Guitar Pro 8.2中文解锁版基本简介 Guitar Pro 8…

【python】python 安装和 pycharm 安装

1 python 安装 1.1 下载 下载地址&#xff1a;python 官网 1.2 安装 windows 安装为例。 双击.exe文件打开 安装界面 安装完成 1.3 检查安装是否成功 win/start 键r 键 运行窗口输入 cmd 回车 3 输入 python查看 显示版本信息&#xff0c;表示已经安装成功。 …

谷粒商城-P125【gulimall-search】:更改 elasticsearch 版本不生效

谷粒商城-P125【gulimall-search】&#xff1a;更改 elasticsearch 版本不生效 报错信息报错原因解决办法 报错信息 SpringBoot 项目的版本是 2.6.13&#xff0c;默认集成的 elasticsearch 的版本是 7.15.2&#xff0c;我们需要用的版本是 7.4.2。 SpringBoot 版本 SpringB…

pptpd配置文件/etc/pptpd.conf详解

正文共&#xff1a;1111 字 2 图&#xff0c;预估阅读时间&#xff1a;1 分钟 如果要在Linux系统配置PPTP&#xff08;Point-to-Point Tunneling Protocol&#xff0c;点到点隧道协议&#xff09;VPN&#xff0c;一般是使用pptpd软件。pptpd命令通常从配置文件/etc/pptpd.conf中…

JavaWeb【day15】--(Maven高级)

Maven高级 Web开发讲解完毕之后&#xff0c;我们再来学习Maven高级。其实在前面的课程当中&#xff0c;我们已经学习了Maven。 我们讲到 Maven 是一款构建和管理 Java 项目的工具。经过前面 10 多天 web 开发的学习&#xff0c;相信大家对于 Maven 这款工具的基本使用应该没什…

Windows安装HeidiSQL教程(图文)

一、软件简介 HeidiSQL是一款开源的数据库管理工具&#xff0c;主要用于管理MySQL、MariaDB、SQL Server、PostgreSQL和SQLite等数据库系统。它提供了直观的用户界面&#xff0c;使用户可以轻松地连接到数据库服务器、执行SQL查询、浏览和编辑数据、管理数据库结构等操作。 跨…

Linux:epoll 工作模式

边缘触发&#xff08;Edge Triggered&#xff0c;简称ET&#xff09;和 水平触发&#xff08;Level Triggered&#xff0c;简称LT&#xff09;是epoll两种不同的工作模式&#xff0c;它们在处理I/O事件时有不同的行为。 1&#xff1a;水平触发&#xff08;LT&#xff09;模式 1…

4G MQTT网关在物联网应用中的优势-天拓四方

随着物联网&#xff08;IoT&#xff09;技术的飞速发展&#xff0c;各种设备和系统之间的互联互通变得日益重要。MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;作为一种轻量级的发布/订阅消息传输协议&#xff0c;因其高效、可靠、简单的特性&#xff0c;在…

从 Greenplum 到 Databend,数据仓库的开源新选择

Greenplum 是知名开源数据仓库项目&#xff0c;曾是大数据分析领域的明星产品&#xff0c;在全球范围内尤其是在国内市场上有着重要的地位。今年 6 月&#xff0c; Greenplum 的 GitHub 仓库突然被改为归档模式&#xff0c;访问权限也修改为只读&#xff0c;用户将失去对源代码…

0910作业+思维导图

一、作业&#xff08;实现一个闹钟) 1、代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//调整标签页大小this->resize(800,400);//lab:显示系统时间…

VS2010程序打包为可执行安装程序

说明 记录一下下次再用时省点事儿&#xff0c;直接进入正题吧 步骤 1. 首先把该装好的软件装好&#xff0c;然后创建一个 安装项目 , 如下图 2. 右键 应用程序文件夹 的 添加 , 如下图可添加要打包的文件(和文件夹&#xff0c;文件夹需要添加文件夹)&#xff0c;一般是已经编…

SpringBoot 整合WebSocket 简单实战案例

先是pom.xml添加依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>PS&#xff1a;application.properties不需要添加任何配置 &#xff0c…

元学习之模型诊断元学习(model-agnosticmeta-learning,MAML)

模型诊断元学习&#xff08;model-agnosticmeta-learning&#xff0c;MAML&#xff09;&#xff0c; 另一个是Reptile。这两个算法都是在 2017 年提出来的&#xff0c;而且都是基于梯度下降法进行优化 的。那我们最常用的学习算法是梯度下降&#xff0c;在梯度下降中&#xff0…

基于VUE的在线音乐播放管理系统

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于VUE的在线音乐播放管理系统3是前后端分离项目&#xff0c;拥有两种角色 管理员&#xff1a;用户管理、收藏管理、歌手管理、歌曲管理、歌单管理、评论管理等 用户&#xff1a;登录注…