目录
JDBC 常用的类和接口
一、Connection接口
二、Statement接口
三、PreparedStatement接口
四、DriverManager类
五、ResultSet接口
六、Java API文档使用
七、针对JDBC的基本操作
JDBC 常用的类和接口
在JAVA语言提供了很多的接口和类来用于数据库的变成,
下面将介绍一些JDBC常用的类和接口,它们都是在java.sql包中
一、Connection接口
connection接口是与数据库进行连接,在连接中执行SQL语句并返回结果集,
Connection
对象的数据库能够提供描述其表,其支持的SQL语法,其存储过程,此连接的功能等的信息。 该信息是用getMetaData
方法获得的。
注意:配置Connection
时,JDBC应用程序应使用适当的Connection
方法,例如setAutoCommit
或setTransactionIsolation
。 当有JDBC方法可用时,应用程序不应直接调用SQL命令来更改连接的配置。 默认情况下,Connection
对象处于自动提交模式,这意味着它在执行每个语句后自动提交更改。 如果自动提交模式已禁用,必须显式调用方法commit
才能提交更改; 否则数据库更改将不会被保存。
使用JDBC 2.1核心API创建的新的Connection
对象具有与之关联的最初为空的类型映射。 用户可以在此类型地图中输入UDT的自定义映射。 当UDT从数据源中检索该方法ResultSet.getObject
,所述getObject
方法将检查连接的类型映射,以查看是否存在对UDT中的条目。 如果是这样,getObject
方法会将UDT映射到指定的类。 如果没有条目,将使用标准映射映射UDT。
用户可以创建一个新的类型映射,它是一个java.util.Map
对象,在其中创建一个条目,并将其传递给可以执行自定义映射的java.sql
方法。 在这种情况下,该方法将使用给定的类型映射,而不是与该连接关联的映射。
例如,以下代码片段指定SQL类型ATHLETES
将映射到Java编程语言中的类Athletes
。 的代码片段检索类型映射为Connection
对象con
,插入进入它,然后设置型地图与所述新的条目作为连接的类型映射。 java.util.Map map = con.getTypeMap(); map.put("mySchemaName.ATHLETES", Class.forName("Athletes")); con.setTypeMap(map);
下面介绍connection接口中的方法
connection接口方法
方法 | 功能 |
createStatement() | 创建Statement的对对象 |
preparedStatement() | 创建预处理对象preparedStatement |
isReadOnly() | 查看当前的Connection对象的读取模式是不是只读模式 |
setReadOnly() | 设置当前Connection对象的读取方式,默认是非读取方式 |
commit() | 使所有上次提交/回滚后进行的更改成为持久的更改,并释放此Connection对象当前持有的所有数据锁 |
roolback() | 取消在当前事务中进行的所有更改,并释放此Connection对象当前持有的所有数据锁 |
close() | 立即释放Connection对象的数据库和JDBC资源,而不是等待他们自动释放 |
二、Statement接口
Statement接口用于在已经建立连接的基础上向数据库发送SQL语句。
在JDBC中有三种Statement对象
1.Statement对象,用于执行不带参数的简单的SQL语句
2.PreparedStatement:继承Statement,用于执行动态的SQL语句。
3.CallableStatement:继承了PreparedStatement,用于执行对数据库存储过程的调用。
Statement接口常用方法
方法 | 功能 |
execute(String sql) | 执行静态的select语句,该语句可能返回多个结果集 |
executeQua\ery(String sql) | 执行给定的SQL语句,该语句返回单个ResultSet对象 |
clearBatch() | 清空此Statement对象的当前SQL语句列表 |
executeBatch() | 将一批命令提交给数据库来执行,如果全部执行成功,则返回更新计数组成的数组, |
close() | 释放Statement实例占用的数据库和JDBC资源 |
三、PreparedStatement接口
PreparedStatement接口用来动态的执行SQL语句,
通过PreparedStatement实例执行的动态SQL语句,将被编译并保存在PreparedStatement实例中,从而反复的执行该SQL语句
- public interface PreparedStatement
extends Statement 表示预编译的SQL语句的对象。 SQL语句已预编译并存储在
PreparedStatement
对象中。 然后可以使用该对象多次有效地执行此语句。
注意:setter方法(setShort
,setString
用于设置IN参数值必须指定与所定义的SQL类型的输入参数的兼容的类型,等等)。 例如,如果IN参数具有SQL类型INTEGER
,则应使用方法setInt
。
如果需要任意参数类型转换,方法setObject
应与目标SQL类型一起使用。
在设定的参数的以下示例中,con
表示一个活动连接: PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?"); pstmt.setBigDecimal(1, 153833.00) pstmt.setInt(2, 110592) 下面介绍PreparedStatement的接口方法 - PreparedStatement接口方法
方法 | 功能 |
setInt() | 指定位置的参数设置int值 |
setaFloat() | 指定位置的参数设置float值 |
setDouble() | 指定位置的参数设置double值 |
setBoolean | 指定位置的参数设置boolean值 |
setString() | 指定位置的参数设置string值 |
executeUpdate() | 执行前面包含的参数的动态insert、update、delete语句 |
clearParameters() | 清除当前的所有参数的值 |
四、DriverManager类
DriverManager类用来管理数据库的所有驱动程序,它是JDBC的管理层,作用于用户和驱动程序之间。
通过getConnection()方法来建立连接,否则会抛出异常。
- public class DriverManager
extends Object用于管理一组JDBC驱动程序的基本服务。
注意: JDBC 2.0 API中新增的DataSource接口提供了另一种连接到数据源的方法。 使用DataSource
对象是连接到数据源的首选方法。
作为其初始化的一部分,DriverManager
类将尝试加载在“jdbc.drivers”系统属性中引用的驱动程序类。 这允许用户自定义应用程序使用的JDBC驱动程序。 例如在〜/ .hotjava / properties文件中,您可以指定:
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver
DriverManager
方法getConnection
和getDrivers
已得到增强,以支持Java Standard Edition Service Provider机制。 JDBC 4.0驱动程序必须包含文件META-INF/services/java.sql.Driver
。 该文件包含java.sql.Driver的JDBC驱动程序实现的java.sql.Driver
。 例如,要加载my.sql.Driver
类, META-INF/services/java.sql.Driver
文件将包含条目:
my.sql.Driver
应用程序不再需要使用Class.forName()
显式加载JDBC驱动程序。 目前使用加载JDBC驱动程序的现有程序Class.forName()
将继续无需修改工作。
当调用方法getConnection
时, DriverManager
将尝试从初始化中加载的驱动程序中找到合适的驱动程序,并使用与当前小程序或应用程序相同的类加载器显式加载驱动程序。
从Java 2 SDK,Standard Edition,1.3版开始,只有在授予了适当的权限后才能设置记录流。 通常这将通过ToolTool工具来完成,该工具可用于授予permission java.sql.SQLPermission "setLog"
。
下面介绍DriverManager类
DriverManager类方法
方法 | 功能 |
getConnection(String url,String user,String password) | 进行连接数据库 |
setLoginTimeout() | 获取驱动程序试图登入到某一数据库是可以等待的最长的时间,以秒为单位 |
printIn() | 将一条消息打印在当前JDBC日志流中 |
五、ResultSet接口
ResultSet接口类似于一个临时表,用来暂存数据库查询操作所获取的结果集,
ResultSet实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过next()方法可将指针下移。
- public interface ResultSet
extends Wrapper, AutoCloseable 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
ResultSet
对象保持一个光标指向其当前的数据行。 最初,光标位于第一行之前。next
方法将光标移动到下一行,并且由于在ResultSet
对象中没有更多行时返回false
,因此可以在while
循环中使用循环来遍历结果集。
默认的ResultSet
对象不可更新,并且只有一个向前移动的光标。 因此,您只能从第一行到最后一行迭代一次。 可以生成可滚动和/或可更新的ResultSet
对象。 以下代码片段(其中con
是有效的Connection
对象)说明了如何使可滚动且对其他人更新不敏感的结果集,这是可更新的。 有关其他选项,请参阅ResultSet
字段。Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2"); // rs will be scrollable, will not show changes made by others, // and will be updatable 所述ResultSet
接口提供getter方法(getBoolean
,getLong
,用于从当前行检索列值,等等)。 可以使用列的索引号或列的名称来检索值。 一般来说,使用列索引将更有效率。 列从1编号。为了最大可移植性,每行中的结果集列应以从左到右的顺序读取,每列应只读一次。 对于getter方法,JDBC驱动程序尝试将底层数据转换为getter方法中指定的Java类型,并返回合适的Java值。 JDBC规范具有一个表格,该表格显示了可由ResultSet
getter方法使用的SQL类型到Java类型的允许映射。
用作getter方法输入的列名不区分大小写。 当使用列名称调用getter方法时,多个列具有相同的名称,将返回第一个匹配列的值。 列名称选项用于在生成结果集的SQL查询中使用列名时使用。 对于在查询中未明确命名的列,最好使用列号。 如果使用列名称,程序员应该小心保证它们唯一地引用预期的列,这可以通过SQL AS子句来确保。
JDBC 2.0 API(Java¢2 SDK,Standard Edition,1.2版)中的此接口添加了一组更新方法。 关于getter方法参数的注释也适用于updater方法的参数。
更新方法可以以两种方式使用:
- 更新当前行中的列值。 在可滚动的
ResultSet
对象中,光标可以向前和向后移动到绝对位置或相对于当前行的位置。 下面的代码段更新NAME
所述的第五行中列ResultSet
对象rs
,然后使用方法updateRow
来更新该数据的源表rs
推导。
NAME
AINSWORTH
- 将列值插入到插入行中。 可更新的
ResultSet
对象具有与其相关ResultSet
的特殊行,用作构建要插入的行的暂存区域。 以下代码片段将光标移动到插入行,构建一个三列行,并将其插入到rs
,并使用方法insertRow
进入数据源表。
AINSWORTH
35
true
甲ResultSet
当对象将自动关闭Statement
生成它对象被关闭时,重新执行,或用于检索从多个结果的序列中的下一结果。
ResultSet
对象的列的数量,类型和属性由ResultSet.getMetaData
方法返回的ResultSetMetaData
对象提供。
下面介绍ResultSet接口 方法
- ResultSet接口 方法
方法 | 功能 |
getInt() | 以int形式存放ResultSet对象的当前行的指定列表。如果列表为NULL,则返回0 |
first() | 将指针移动到当前记录的第一行 |
last() | 将指针移动到当前记录的最后一行 |
next() | 将指针指向下一行 |
getrow() | 查看当前行的索引号 |
*注:其他的接口的方法可以查看JAVA API进行查看,参考标题六
六、Java API文档使用
API全称Application Programming Interface。及应用程序编程接口,
主要包括类的继承结构、成员变量、成员方法、构造方法、静态成员的描述信息和详细说明等内容
API 1.8中文版免费领取连接(针对英文不好的)
JAVA API 1.8中文版版免费领取 请点击
另外,JDK10的API可以在官网找到,但是是全英文,英文好的小伙伴可以使用。
如果感觉文章不错,可以关注本博主并点赞呦,欢迎转载!!!