12_02.【Java】JDBC中常用的类和接口

本文详细介绍了Java SQL包中的DriverManager类、Connection接口、Statement接口、PreparedStatement接口和ResultSet接口。讲解了如何加载不同数据库驱动,以及各个接口的主要方法和应用场景,包括创建数据库连接、执行SQL语句和处理查询结果等。
摘要由CSDN通过智能技术生成

JDBC中常用的类和接口

java.sql包中提供了丰富的接口、类,还有一些Enum枚举对象和Exception常见异常用于数据库编程。利用这些类和接口可以放拜年的访问并处理存储在数据库中的数据。本节将介绍一些常用的JDBC接口和类,这些接口和类都在java.sql包中。

一、DriverManager类

DriverManager类是JDBC的管理层,用来管理数据库中的驱动程序。在使用Java操作数据库之前,必须使用Class类的静态方法forName(String className)加载能够连接数据库的驱动程序。

1、加载MySQL数据库驱动程序

加载MySQL数据库驱动程序(包名为mysql-connector-java-8.0.22.jar)的代码如下:

try{
   
  Class.forName("com.mysql.cj.jdbc.Driver");
}catch(ClassNotFoundException e){
   
  e.printStackTrace();
}

2、加载Oracle数据库驱动程序

加载Oracle数据库驱动程序(包名为ojdbc6.jar)的代码如下:

try{
   
  Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException e){
   
  e.printStackTrace();
}

3、加载SQL Server 2000数据库驱动程序

加载SQL Server 2000数据库驱动程序(包名为msbase.jar、mssqlserver.jar、mustily.jar)的代码如下:

try{
   
  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}catch(ClassNotFoundException e){
   
  e.printStackTrace();
}

4、加载SQL Server 2005以上版本的数据库驱动程序

加载SQL Server 2005以上版本数据库驱动程序(包名为sqljdbc4.jar)的代码如下:

try{
   
  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}catch(ClassNotFoundException e){
   
  e.printStackTrace();
}

加载要连接的数据库驱动程序后,Java会自动将驱动程序的实例注册到Drivermanager类中,这时可以通过DriverManager类的getConnection()方法与指定的数据库建立连接,getConnection()方法的语法如下:

getConnection(String url,String user,String password)
  • url:要连接的数据库的URL;
  • user:连接数据库的用户名;
  • password:连接数据库的密码;

例如,使用DriverManager类的getConnection()方法,与本地的MySQL数据库建立连接:

Drivermanager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","password");
  • 本地的Ip地址:127.0.0.1
  • MySQL默认端口:3306
  • 数据库名称:test
  • 用户名:root
  • 密码:password

例如,使用DriverManager类的getConnection()方法,与本地的SQLServer 2000数据库建立连接:

Drivermanager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test","sa","password");

例如,使用DriverManager类的getConnection()方法,与本地的SQLServer 2005以上版本数据库建立连接:

Drivermanager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test","sa","password");

例如,使用DriverManager类的getConnection()方法,与本地的Oracle数据库建立连接:

Drivermanager.getConnection("jdbc:oracle:thin:@//127.0.0.1:1521/test","system","password");

二、Connection接口

Connection接口代表Java端口与指定的数据库之间的连接。在连接的上下文中执行SQL语句并返回结果。

1、继承关系与子接口

|--- java.sql
				|---  Wrapper
						|--- Connection

2、Connection概述

官方API是这样描述Connection接口的:

一个连接对象的数据库,需要能够提供其表的描述、其支持的SQL语法、其存储过程、其功能等的信息。该信息是通过getMetaData方法获得的。

在配置连接时,JDBC应用程序应该使用合适的连接方法,如setAutoCommitsetTransactionIsolation。当有JDBC方法可用时,应用程序不应该直接调用SQL命令来更改连接的配置。默认情况下,连接对象处于自动提交模式,这意味着它在执行每个语句后自动提交更改。如果自动提交模式已被禁用,则必须显式调用commit方法以提交更改;否则,将不会保存数据库更改。

使用JDBC 2.1核心API创建的新连接对象最初有一个与之关联的空类型映射。用户可以在此类型映射中为UDT输入自定义映射。当使用ResultSet方法从数据源检索UDT时。getObject方法将检查连接的类型映射,以查看是否有该UDT的条目。如果是,getObject方法将UDT映射到指定的类。如果没有条目,UDT将使用标准映射进行映射。

用户可以创建一个新的类型映射,它是一个java.util.Map对象,在其中进行输入,并将其传递给可执行自定义映射的java.sql方法。 在这种情况下,该方法将使用给定的类型映射,而不是与连接关联的类型映射。

例如,以下代码片段指定将SQL类型ATHLETES映射为Java编程语言中的Athletes类。 该代码段为Connection对象con检索类型映射,将条目插入其中,然后将具有新条目的类型映射设置为连接的类型映射。

3、Connection关键字

Connection接口的关键字如下:

修饰符/类型 关键字 Field and Description
static int TRANSACTION_NONE 表示不支持事务的常量。
static int TRANSACTION_READ_COMMITTED 指示防止脏读的常量;可能会发生不可重复读取和幻像读取。
static int TRANSACTION_READ_UNCOMMITTED 指示可能发生脏读、不可重复读和幻像读的常数。
static int TRANSACTION_REPEATABLE_READ 一个常数,指示防止脏读和不可重复读;可能会发生幻像读取。
static int TRANSACTION_SERIALIZABLE 一个常数,表示防止脏读、不可重复读和幻影读。

4、Connection接口方法

(1)常用的方法
  • createStatement():创建一个语句对象,用于向数据库发送SQL语句。
  • createStatement(int resultSetType,int resultSetConcurrency):创建一个语句对象,该对象将生成具有给定类型和并发性的ResultSet对象。
  • prepareStatement():创建用于向数据库发送参数化SQL语句的PreparedStatement对象。
  • prepareCall(String sql):创建用于调用数据库存储过程的CallableStatement对象。
  • isReadOnly():检索此连接对象是否处于只读模式。
  • setReadOnly():将此连接置于只读模式,作为对驱动程序启用数据库优化的提示。
  • commit():永久保存自上次提交/回滚以来所做的所有更改,并释放此连接对象当前持有的任何数据库锁。
  • roolback():撤销在当前事务中所做的所有更改,并释放此连接对象当前持有的任何数据库锁。
  • close():立即释放这个连接对象的数据库和JDBC资源,而不是等待它们被自动释放。

(2)所有方法概述*

修饰符/类型 描述
void abort(Executor executor) 终止打开的连接。
void clearWarnings() 清除为此连接对象报告的所有警告。
void close() 立即释放这个连接对象的数据库和JDBC资源,而不是等待它们被自动释放。
void commit() 永久保存自上次提交/回滚以来所做的所有更改,并释放此连接对象当前持有的任何数据库锁。
Array createArrayOf(String typeName, Object[] elements) 用于创建数组对象的工厂方法。
Blob createBlob() 构造一个实现Blob接口的对象。
Clob createClob() 构造实现Clob接口的对象。
NClob createNClob() 构造一个实现NClob接口的对象。
SQLXML createSQLXML() 构造一个实现SQLXML接口的对象。
Statement createStatement() 创建一个语句对象,用于向数据库发送SQL语句。
Statement createStatement(int resultSetType, int resultSetConcurrency) 创建一个语句对象,该对象将生成具有给定类型和并发性的ResultSet对象。
Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) 创建一个语句对象,该对象将生成具有给定类型、并发性和可持有性的ResultSet对象。
Struct createStruct(String typeName, Object[] attributes) 用于创建结构对象的工厂方法。
boolean getAutoCommit() 检索此连接对象的当前自动提交模式。
String getCatalog() 检索此连接对象的当前目录名。
Properties getClientInfo() 返回一个列表,其中包含驱动程序支持的每个客户端信息属性的名称和当前值。
String getClientInfo(String name) 返回由名称指定的客户端信息属性的值。
int getHoldability() 检索使用此连接对象创建的ResultSet对象的当前可持有性。
DatabaseMetaData getMetaData() 检索DatabaseMetaData对象,该对象包含关于此连接对象表示连接的数据库的元数据。
int getNetworkTimeout() 获取驱动程序等待数据库请求完成的毫秒数。
String getSchema() 检索此连接对象的当前架构名称。
int getTransactionIsolation() 检索此连接对象的当前事务隔离级别。
Map<String,Class<?>> getTypeMap() 检索与此连接对象关联的映射对象。
SQLWarning getWarnings() 检索调用此连接对象时报告的第一个警告。
boolean isClosed() 检索此连接对象是否已关闭。
boolean isReadOnly() 检索此连接对象是否处于只读模式。
boolean isValid(int timeout) 如果连接没有关闭且仍然有效,则返回true。
String nativeSQL(String sql) 将给定的SQL语句转换为系统的本机SQL语法。
CallableStatement prepareCall(String sql) 创建用于调用数据库存储过程的CallableStatement对象。
CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) 创建一个CallableStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象。
CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) 创建一个CallableStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象。
PreparedStatement prepareStatement(String sql) 创建用于向数据库发送参数化SQL语句的PreparedStatement对象。
PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) 创建一个默认的PreparedStatement对象,该对象能够检索自动生成的键。
PreparedStatement prepareStatement(String sql, int[] columnIndexes) 创建一个默认的PreparedStatement对象,该对象能够返回由给定数组指定的自动生成的键。
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) 创建一个PreparedStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象。
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) 创建一个PreparedStatement对象,该对象将生成具有给定类型、并发性和可持有性的ResultSet对象。
PreparedStatement prepareStatement(String sql, String[] columnNames) 创建一个默认的PreparedStatement对象,该对象能够返回由给定数组指定的自动生成的键。
void releaseSavepoint(Savepoint savepoint) 从当前事务中删除指定的保存点和后续的保存点对象。
void rollback() 撤销在当前事务中所做的所有更改,并释放此连接对象当前持有的任何数据库锁。
void rollback(Savepoint savepoint) 撤销在设置了给定的保存点对象之后所做的所有更改。
void setAutoCommit(boolean autoCommit) 将此连接的自动提交模式设置为给定状态。
void setCatalog(String catalog) 设置给定的目录名,以选择此连接对象的数据库的子空间,并在其中工作。
void setClientInfo(Properties properties) 设置连接的客户机信息属性的值。
void setClientInfo(String name, String value) 将由名称指定的client info属性的值设置为由值指定的值。
void setHoldability(int holdability) 将使用此连接对象创建的ResultSet对象的默认持有性更改为给定的持有性。
void setNetworkTimeout(Executor executor, int milliseconds) 设置连接或从连接创建的对象等待数据库响应任何请求的最长时间。
void setReadOnly(boolean readOnly)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>