jdbc 常用接口类

2024-04-21 23:58
文章标签 jdbc 常用 接口类

本文主要是介绍jdbc 常用接口类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.Driver接口
   每种数据库的驱动程序都应该提供一个实现java.sql.Driver接口的类,简称Driver类,在加载某一驱     动程序的Driver类时,应该创建自己的实例并向java.sql.DriverManager类注册该实例。
   通常情况下通过java.lang.Class类的静态方法forName(String className),加载欲连接数据库的      Driver类,该方法的入口参数为欲加载Driver类的完整路径。成功加载后,会将Driver类的实例注册到    DriverManager类中,如果加载失败,将抛出ClassNotFoundException异常,即未找到指定Driver类的     异常。
   DriverManager类
  java.sql.DriverManager类负责管理JDBC驱动程序的基本服务,是JDBC的管理层,作用于用户和驱动程    序之间,负责跟踪可用的驱动程序,并在数据库和驱动程序之间建立连接;另外,DriverManager类也处   理诸如驱动程序登录时间限制及登录和跟踪消息的显示等工作。成功加载Driver类并在DriverManager类   中注册后,DriverManager类即可用来建立数据库连接。
  当调用DriverManager类的getConnection()方法请求建立数据库连接时,DriverManager类将试图定位一  个适当的Driver类,并检查定位到的Driver类是否可以建立连接,如果可以则建立连接并返回,如果不    可以则抛出SQLException异常。
DriverManager类的方法:
1. getConnection(String url, String user, String password)
   为静态方法,用来获得数据库连接,有3个入口参数,依次为欲连接数据库的URL、用户名和密码,返回   值类型为java.sql.Connection
2. setLoginTimeout(int seconds)
   为静态方法,用来设置每次等待建立数据库连接的最长时间
3. setLogWriter(java.io.PrintWriter out)
   为静态方法,用来设置日志的输出对象
4. println(String message)
   为静态方法,用来输出指定消息到当前的JDBC日志流

二.Connection接口
  java.sql.Connection接口代表与特定数据库的连接,在连接的上下文中可以执行SQL语句并返回结果,    还可以通过getMetaData()方法获得由数据库提供的相关信息,例如数据表、存储过程和连接功能等信息   常用方法:
1.createStatement()
  创建并返回一个Statement实例,通常在执行无参的SQL语句时创建该实例
2.prepareStatement()
  创建并返回一个PreparedStatement实例,通常在执行包含参数的SQL语句时创建该实例,并对SQL语句进   行了预编译处理
3.prepareCall()
  创建并返回一个CallableStatement实例,通常在调用数据库存储过程时创建该实例
4.setAutoCommit()
  设置当前Connection实例的自动提交模式。默认为true,即自动将更改同步到数据库中;如果设为false   ,需要通过执行commit()或rollback()方法手动将更改同步到数据库中
5.getAutoCommit()
  查看当前的Connection实例是否处于自动提交模式,如果是则返回true,否则返回false
6.setSavepoint()
  在当前事务中创建并返回一个Savepoint实例,前提条件是当前的Connection实例不能处于自动提交模式  ,否则将抛出异常
7.releaseSavepoint()
  从当前事务中移除指定的Savepoint实例
8.setReadOnly()
  设置当前Connection实例的读取模式,默认为非只读模式。不能在事务当中执行该操作,否则将抛出异  常。有一个boolean型的入口参数,设为true则表示开启只读模式,设为false则表示关闭只读模式
9.isReadOnly()
  查看当前的Connection实例是否为只读模式,如果是则返回true,否则返回false
10.isClosed()
  查看当前的Connection实例是否被关闭,如果被关闭则返回true,否则返回false
11.commit()
  将从上一次提交或回滚以来进行的所有更改同步到数据库,并释放Connection实例当前拥有的所有数据  库锁定
12.rollback()
  取消当前事务中的所有更改,并释放当前Connection实例拥有的所有数据库锁定。该方法只能在非自动  提交模式下使用,如果在自动提交模式下执行该方法,将抛出异常。有一个入口参数为Savepoint实例的  重载方法,用来取消Savepoint实例之后的所有更改,并释放对应的数据库琐定
13.close()
   立即释放Connection实例占用的数据库和JDBC资源,即关闭数据库连接
 

三.Statement接口
   java.sql.Statement接口用来执行静态的SQL语句,并返回执行结果。例如,对于insert、update和   delete语句,调用executeUpdate(String sql)方法,而select语句则调用executeQuery(String sql)   方法,并返回一个永远不能为null的ResultSet实例。
 
常用方法:
1.executeQuery(String sql)
  执行指定的静态SELECT语句,并返回一个永远不能为null的ResultSet实例
 
2.executeUpdate(String sql)
  执行指定的静态INSERT、UPDATE或DELETE语句,并返回一个int型数值,为同步更新记录的条数
 
3.clearBatch()
 清除位于Batch中的所有SQL语句。如果驱动程序不支持批量处理将抛出异常
 
4.addBatch(String sql)
  将指定的SQL命令添加到Batch中。String型入口参数通常为静态的INSERT或UPDATE语句。如果驱动程序  不支持批量处理将抛出异常
 
5.executeBatch()
  执行Batch中的所有SQL语句,如果全部执行成功,则返回由更新计数组成的数组,数组元素的排序与SQL   语句的添加顺序对应。数组元素有以下几种情况:①大于或等于零的数:说明SQL语句执行成功,为影响   数据库中行数的更新计数;②-2:说明SQL语句执行成功,但未得到受影响的行数③-3:说明SQL语句执    行失败,仅当执行失败后继续执行后面的SQL语句时出现。如果驱动程序不支持批量、或者未能成功执行   Batch中的SQL语句之一,将抛出异常
6.close()
  立即释放Statement实例占用的数据库和JDBC资源
 

四.PreparedStatement接口
  java.sql.PreparedStatement接口继承并扩展了Statement接口,用来执行动态的SQL语句,即包含参数  的SQL语句。通过PreparedStatement实例执行的动态SQL语句,将被预编译并保存到PreparedStatement  实例中,从而可以反复并且高效地执行该SQL语句。
  需要注意的是,在通过setXXX()方法为SQL语句中的参数赋值时,建议利用与参数类型匹配的方法,也可  以利用setObject()方法为各种类型的参数赋值。
如:
  PreparedStatement ps = connection
       .prepareStatement("select * from table_name where id>? and (name=? or name=?)");          ps.setInt(1, 6);
        ps.setString(2, "马先生");
        ps.setObject(3, "李先生");
        ResultSet rs = ps.executeQuery();
方法:
1.executeQuery()
 执行前面包含参数的动态SELECT语句,并返回一个永远不能为null的ResultSet实例
 
2.executeUpdate()
 执行前面包含参数的动态INSERT、UPDATE或DELETE语句,并返回一个int型数值,为同步更新记录的条数
 
3.setInt(int i, int x)
 为指定参数设置int型值,对应参数的SQL类型为INTEGER
 
4.setLong(int i, long x)
 为指定参数设置long型值,对应参数的SQL类型为BIGINT
 
5.setFloat(int i, float x)
 为指定参数设置float型值,对应参数的SQL类型为FLOAT
 
6.setDouble(int i, double x)
 为指定参数设置double型值,对应参数的SQL类型为DOUBLE
 
7.setString(int i, String x)
 为指定参数设置String型值,对应参数的SQL类型为VARCHAR或LONGVARCHAR
 
8.setBoolean(int i, boolean x)
 为指定参数设置boolean型值,对应参数的SQL类型为BIT
 
9.setDate(int i, Date x)
 为指定参数设置java.sql.Date型值,对应参数的SQL类型为DATE
 
10.setObject(int i, Object x)
 用来设置各种类型的参数,JDBC规范定义了从Object类型到SQL类型的标准映射关系,在向数据库发送时将被转换为相应的SQL类型
 
11.setNull(int i, int sqlType)
 将指定参数设置为SQL中的NULL。该方法的第二个入口参数用来设置参数的SQL类型,并且必须设置,具体值从java.sql.Types类中定义的静态常量中选择
 
12.clearParameters()
 清除当前所有参数的值
注意:
  setXXX()方法的第一个入口参数为欲赋值参数的索引位置,从1开始;第二个入口参数为参数的值,类型  因方法而定。


五.CallableStatement接口
java.sql.CallableStatement接口继承并扩展了PreparedStatement接口,用来执行SQL的存储过程。

JDBC API定义了一套存储过程SQL转义语法,该语法允许对所有RDBMS通过标准方式调用存储过程。该语法定义了两种形式,分别是包含结果参数和不包含结果参数,如果使用结果参数,则必须将其注册为OUT型参数,参数是根据定义位置按顺序引用的,第一个参数的索引为1。

为参数赋值的方法使用从PreparedStatement中继承来的setXXX()方法。在执行存储过程之前,必须注册所有OUT参数的类型,它们的值是在执行后通过getXXX()方法获得的。

CallableStatement可以返回一个或多个ResultSet实例。处理多个ResultSet对象的方法是从Statement中继承来的。

 

六.ResultSet接口
java.sql.ResultSet接口类似于一个数据表,通过该接口的实例可以获得检索结果集,以及对应数据表的相关信息。例如列名和类型等,ResultSet实例通过执行查询数据库的语句生成。

ResultSet实例具有指向当前数据行的指针,最初,指针指向第一行记录的前方,通过next()方法可以将指针移动到下一行,如果存在下一行该方法则返回true,否则返回false,所以可以通过while循环来迭代ResultSet结果集。默认情况下ResultSet实例不可以更新,只能向前移动指针,所以只能迭代一次,并且只能按从前到后的顺序。如果需要,可以生成可滚动和可更新的ResultSet实例。

ResultSet接口提供了从当前行检索不同类型列值的getXXX()方法,均有两个重载方法,分别根据列的索引编号和列的名称检索列值,其中以列的索引编号较为高效,编号从1开始。对于不同的getXXX()方法,JDBC驱动程序尝试将基础数据转换为与getXXX()方法相应的Java类型并返回。

在JDBC 2.0 API(JDK 1.2)之后,为该接口添加了一组更新方法updateXXX(),均有两个重载方法,分别根据列的索引编号和列的名称指定列。可以用来更新当前行的指定列,也可以用来初始化欲插入行的指定列,但是该方法并未将操作同步到数据库,需要执行updateRow()或insertRow()方法完成同步操作。

方法:
  first()
 移动指针到第一行。如果结果集为空则返回false,否则返回true。如果结果集类型为TYPE_FORWARD_ONLY将抛出异常
 
last()
 移动指针到最后一行。如果结果集为空则返回false,否则返回true。如果结果集类型为TYPE_FORWARD_ONLY将抛出异常
 
previous()
 移动指针到上一行。如果存在上一行则返回true,否则返回false。如果结果集类型为TYPE_FORWARD_ONLY将抛出异常
 
next()
 移动指针到下一行。指针最初位于第一行之前,第一次调用该方法将移动到第一行。如果存在下一行则返回true,否则返回false
 
beforeFirst()
 移动指针到ResultSet实例的开头,即第一行之前。如果结果集类型为TYPE_FORWARD_ONLY将抛出异常
 
afterLast()
 移动指针到ResultSet实例的末尾,即最后一行之后。如果结果集类型为TYPE_FORWARD_ONLY将抛出异常
 
absolute()
 移动指针到指定行。有一个int型入口参数,正数表示从前向后编号,负数表示从后向前编号,编号均从1开始。如果存在指定行则返回true,否则返回false。如果结果集类型为TYPE_FORWARD_ONLY将抛出异常
 
relative()
 移动指针到相对于当前行的指定行。有一个int型入口参数,正数表示向后移动,负数表示向前移动,视当前行为0。如果存在指定行则返回true,否则返回false。如果结果集类型为TYPE_FORWARD_ONLY将抛出异常
 
getRow()
 查看当前行的索引编号。索引编号从1开始,如果位于有效记录行上则返回一个int型索引编号,否则返回0
 
findColumn()
 查看指定列名的索引编号。该方法有一个String型入口参数,为欲查看列的名称,如果包含指定列,则返回int型索引编号,否则将抛出异常
 
isBeforeFirst()
 查看指针是否位于ResultSet实例的开头,即第一行之前。如果是则返回true,否则返回false
 
isAfterLast()
 查看指针是否位于ResultSet实例的末尾,即最后一行之后。如果是则返回true,否则返回false
 
isFirst()
 查看指针是否位于ResultSet实例的第一行。如果是则返回true,否则返回false
 
isLast()
 查看指针是否位于ResultSet实例的最后一行。如果是则返回true,否则返回false
 
close()
 立即释放ResultSet实例占用的数据库和JDBC资源,当关闭所属的Statement实例时也将执行此操作
 
getInt()
 以int型获取指定列对应SQL类型的值。如果列值为NULL,则返回值0
 
getLong()
 以long型获取指定列对应SQL类型的值。如果列值为NULL,则返回值0
 
getFloat()
 以float型获取指定列对应SQL类型的值。如果列值为NULL,则返回值0
 
getDouble()
 以double型获取指定列对应SQL类型的值。如果列值为NULL,则返回值0
 
getString()
 以String型获取指定列对应SQL类型的值。如果列值为NULL,则返回值null
 
getBoolean()
 以boolean型获取指定列对应SQL类型的值。如果列值为NULL,则返回值false
 
getDate()
 以java.sql.Date型获取指定列对应SQL类型的值。如果列值为NULL,则返回值null
 
getObject()
 以Object型获取指定列对应SQL类型的值。如果列值为NULL,则返回值null
 
getMetaData()
 获取ResultSet实例的相关信息,并返回ResultSetMetaData类型的实例
 
updateNull()
 将指定列更改为NULL。用于插入和更新,但并不会同步到数据库,需要执行updateRow()或insertRow()方法完成同步
 
updateInt()
 更改SQL类型对应int型的指定列。用于插入和更新,但并不会同步到数据库,需要执行updateRow()或insertRow()方法完成同步
 
updateLong()
 更改SQL类型对应long型的指定列。用于插入和更新,但并不会同步到数据库,需要执行updateRow()或insertRow()方法完成同步
 
updateFloat()
 更改SQL类型对应float型的指定列。用于插入和更新,但并不会同步到数据库,需要执行updateRow()或insertRow()方法完成同步
 
updateDouble()
 更改SQL类型对应double型的指定列。用于插入和更新,但并不会同步到数据库,需要执行updateRow()或insertRow()方法完成同步
 
updateString()
 更改SQL类型对应String型的指定列。用于插入和更新,但并不会同步到数据库,需要执行updateRow()或insertRow()方法完成同步
 
updateBoolean()
 更改SQL类型对应boolean型的指定列。用于插入和更新,但并不会同步到数据库,需要执行updateRow()或insertRow()方法完成同步
 
updateDate()
 更改SQL类型对应Date型的指定列。用于插入和更新,但并不会同步到数据库,需要执行updateRow()或insertRow()方法完成同步
 
updateObject()
 可更改所有SQL类型的指定列。用于插入和更新,但并不会同步到数据库,需要执行updateRow()或insertRow()方法完成同步
 
moveToInsertRow()
 移动指针到插入行,并记住当前行的位置。插入行实际上是一个缓冲区,在插入行可以插入记录,此时,仅能调用更新方法和insertRow()方法,通过更新方法为指定列赋值,通过insertRow()方法同步到数据库,在调用insertRow()方法之前,必须为不允许为空的列赋值
 
moveToCurrentRow()
 移动指针到记住的位置,即调用moveToInsertRow()方法之前所在的行
 
insertRow()
 将插入行的内容同步到数据库。如果指针不在插入行上,或者有不允许为空的列的值为空,将抛出异常
 
updateRow()
 将当前行的更新内容同步到数据库。更新当前行的列值后,必须调用该方法,否则不会将更新内容同步到数据库
 
deleteRow()
 删除当前行。执行该方法后,并不会同步到数据库,而是在执行close()方法后同步到数据库

这篇关于jdbc 常用接口类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时

C#中的 Dictionary常用操作

《C#中的Dictionary常用操作》C#中的DictionaryTKey,TValue是用于存储键值对集合的泛型类,允许通过键快速检索值,并且具有唯一键、动态大小和无序集合的特性,常用操作包括添... 目录基本概念Dictionary的基本结构Dictionary的主要特性Dictionary的常用操作

Python中常用的四种取整方式分享

《Python中常用的四种取整方式分享》在数据处理和数值计算中,取整操作是非常常见的需求,Python提供了多种取整方式,本文为大家整理了四种常用的方法,希望对大家有所帮助... 目录引言向零取整(Truncate)向下取整(Floor)向上取整(Ceil)四舍五入(Round)四种取整方式的对比综合示例应

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re