- 浏览: 162977 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
panamera:
MQ服务器没有启动,消息生产者一直等待,不会报连接异常,这个问 ...
Spring3 JmsTemplate与MQ的集成 -
lanbo316:
[/size][align=left][size=xx-lar ...
Mybatis分页-利用Mybatis Generator插件生成基于数据库方言的分页语句,统计记录总数 -
fatalfeel:
Irrlicht 3d Engine is full open ...
Android世界的15款开源的游戏开发引擎 -
yakecjh:
哥们能份这个示例的代码给我么,我是北京科瑞明的,我现在正要做M ...
Spring3 JmsTemplate与MQ的集成 -
ma860709:
除了配置~能列一下配置的属性的意思还有代码的实现吗?
Spring3 JmsTemplate与MQ的集成
JDBC复习
JDBC驱动程序的类型:
JDBC-ODBC桥;部分本地API,部分JAVA驱动程序;JDBC网络纯JAVA驱动程序;本地协议纯JAVA驱动程序。
最后一种是访问数据库效率最高的。目前应用最多的也是这种。
不同数据库的连接URL如下:
sqlserver:jdbc:microsoft:sqlserver://localhost:1433;databasename=pubs
ORACLE:jdbc:oracle:thin:@localhost:1521:ORCL
mysql:jdbc:mysql://localhost:3306/databasename
CallableStatement对象用于执行SQL存储过程。
CallableStatement cstmt = conn.prepareCall("call p_changesal(?,?)");
cstmt.registerOutParameter(2, java.sql.Types.INTERGER);//注册OUT类型的返回参数
cstmt.setInt(1, 98);
cstmt.execute();
int sal = cstmt.getInt(2);
可以调用ResultSet.getMetaData()方法来获取ResultSetMetaData对象,再获取元数据。
一个Statement对象在同一时刻只有一个打开的ResultSet对象,在Statement接口中定义的所有executeXXX()方法都隐含地关闭Statement当前的ResultSet对象。如果你要执行多个查询语句,并且需要同时对它们的结果集进行操作,那么你必须使用多个Statement对象。
连接池技术预先建立多个数据库连接对象,然后将连接对象保存到连接池中,当客户请求到时,从池中取出一个连接对象为客户服务,请求完成后,客户程序调用close()方法,将连接对象放回池中。
常用端口:ftp:21 telnet:23 oracle:1521 mysql:3306 sqlserver:1433
注册数据库驱动的3种方式:
1,Class.forName( driverName ) 如:Class.forName("oracle.jdbc.driver.OracleDriver"):
2,Driver drv = new DriverConstructor();
DriverManager.registerDriver(drv);
如:Driver drv = new Oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver( drv );
3,java -Djdbc.drivers = oracle.jdbc.driver.OracleDriver;这种方式只能注册一个driver,命令行注册方式
方法1最好
建立连接3种方式:
getConnection( String url ) //匿名访问
getConnection( url, Properties info) //要一个properties对
getConnection( url, username, password) //最常用
PreparedStatement继承自Statement
Statement 1,不适合有多个参数的SQL;2,不适合重复执行同构的SQL
Statement tem = conn.createStatement();
PreparedStatement pstm = conn.prepareStatement("select * from t_user where id = ?");
pstm.setString(1, "21"); //下标从1开始
pstm.executeQuery();
CallableStatement:专用于调用服务器的存储过程
Statement里的方法:
executeQuery( sql ) 返回ResultSet
execute( sql ) 返回boolean,是否有ResultSet返回
executeUpdate( sql ) 返回int,影响的记录行数
字符转换:
java -------------> oracle:ISO-8859-1
Unicode:gb2312(GBK)
如:String name = "张三";
gb2312---->ISO-8859-1:
String newName = new String(name.getBytes("gb2312"), "ISO-8859-1");
ISO-8859-1------->gb2312:
String newName = new String(name.getBytes("ISO-8859-1"), "gb2312");
从ResultSet里面取值:
while(rs.next()){
String name = rs.getString("name");
}
关闭:
if(null != rs){
try{
rs.close();
}catch(Exception e){
}
}
statement,connection一样要先判断非空,后关闭
SQLWarning:理论上的,不影响程序执行,不用处理;
SQLException里的方法:getErrorCode:返回错误码;getMessage:返回错误信息
元数据:DatabaseMetaData,ResultSetMetaData
conn.getMetaData(); rs.getMetaData();
查看数据库中表的信息
事务处理流程:
1,关闭自动提交;2,执行操作;3,处理数据;rollback或commit;4,打开自动提交
commit不仅是原有事务的结束,也是新事务的开始。
并发控制:
事务级别:transaction_none; transaction_read_uncommitted(默认); transaction_read_committed:解决脏读dirty read
transaction_repeateable_read:解决不可重复读的问题:non_repeated read
transaction_serializable:解决幻读:phantom read
oracle只支持read_commit和serializable
例如:conn.setTransactionIsolation( Connection.TRANSACTION_READ_COMMITTED );
回滚集的问题:
CONCUR_READ_ONLY, CONCUR_UPDATEABLE:
用来指定可不可以修改数据库:
TYPE_FORWARD_ONLY 默认
TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENITIVE
用来指定Result能不能滚动
可以用refreshRow刷新当前行。
例:Statement stm = con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATEABLE);
定位方法:全部返回boolean,除afterLast(), beforeFirst()复位,返回void
absolute(int row) 传输绝对定位
first(), last(), next(), previous()向前一位
relative(int ) 相对定位
isAfterLast(), isBeforeFirst(), isFirst(), isLast();
注意:指针一开始是指在第一行的前面。
可更新结果集:
rs.updateInt(1, 9911); //更新当前行
rs.updateString("name", "tony");
rs.updateRow(); //修改生效,不调用则无效
rs.absolute(10);
rs.deleteRow(); //删除第10条记录
rs.cancelRowUpdates(); //放弃修改,删除还是会生效
插入新行
rs.moveToInsertRow(); //创建一个空记录
rs.updateInt("id", 11);
rs.updateString("name", "rose");
rs.insertRow();
rs.moveToCurrentRow(); //修改生效
rs没有主键则不能插入数据,必须包含所有的无默认值的非空字段,只能查一个表,不能连接查询,查询结果必须包含主键
如果是插入的话,必须选择表中所有不能为空的列。
批量处理:batch
con.setAutoCommit(false); //关闭自动提交
Statement stm = con.createStatement();
stm.addBatch("insert into t_user(id) value(11)");
stm.addBatch(" ... ");
int[] results = stm.executeBatch(); //返回所有成功的操作结果
con.commit();
con.setAutoCommit(true); //恢复自动提交
高级数据类型:
Blob ------ SQL Blob //大二进制对象 binary large object
Clob ------ SQL Clob //大文本二进制对象character large object
Array ----- SQL Array
Struct ---- SQL structure Type
Ref ------- SQL REF
方法:getXXX, setXXX, updateXXX
步骤:1,获得数据库连接,2,向表中插入一个空的Blog字段,3,获得Blob的输出流,4,通过输入流将数据写入数据库
如:
try{
conn.setAutoCommit(false);
Blob blob = null;
PreparedStatement pstm = conn.prepareStatement("insert into t_blob(id,filename,blobData) value
(?,?,empty_blob())"); //empty_blob()函数由oracle提供,用来创建空对象
pstm.setInt(1,10);
pstm.setString(2,"d:/hello.mp3");
pstm.executeUpdate(); //插入空值
pstm.close();
pstm = conn.prepareStatement("select blobData from u_blob where filename = ? for update"); //for update
同步必须使用,只能在查询时使用
pstm.setString(1, "d:/hello.mp3");
rs = pstm.executeQuery();
if(rs.next()){
Blob b = rs.getBlob();
oracle.sql.BLOB ob = (oracle.sql.BLOB)b;
OutputStream os = ob.getBinaryOutputStream();
InputStream is = new FileInputStream("d:/hello.mp3");
byte[] buffer = new byte[4096];
int len = 0;
while(true){
len = is.read(buffer);
if(-1 == len) break;
os.write(buffer, 0, len);
}
is.close();
os.close();
conn.commit();
}
}catch(Exception e){
conn.rollback();
}finally{
}
查询:
conn.setAutoCommit(false);
pstm = conn.prepareStatement("select blobData from u_blob where name = ? for update");
rs = pstm.executeQuery();
if(rs.next()){
blob b = rs.getBlob(1);
InputStream is = b.getBinaryStream();
OutputStream os = new FileOutputStream(path);
byte[] bb = new byte[4096];
int len = 0;
while(true){
len = is.read(bb);
if(len == -1) break;
os.write(bb, 0, len);
}
}
DataSource
WebLogic:services----->JDBC---->connection pool
JNDI:java naming directory interface api
用DataSource建立connection步骤:1,获得数据库连接,2,支持连接池,3,通常可以支持JNDI,4,支持分布式事务
OID:object id:对象在数据库中的ID
OOAD:object orient analyze and design面向对象的分析与设计
ODBC:open database connectivity:开放的数据库连接
JDBC:java database connectivity:java数据库连接
JDBC驱动程序可分为4类:
1,JDBC-ODBC桥; 2,部分本地API,部分JAVA驱动程序; 3,JDBC网络纯JAVA驱动程序; 4,本地协议纯JAVA驱
动程序,这个效率最高
Driver接口:
SQLSERVER:com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc:microsoft:sqlserver://IP:1433;数据库名,用户名,密码
MySQL:com.mysql.jdbc.Driver
jdbc:mysql://IP:3306/数据库名,用户名,密码
DB2:com.ibm.db2.jdbc.app.DB2Driver()
jdbc:db2://IP:端口/数据库名,用户名,密码
oracle:jdbc:oracle:thin:@IP:PORT,DBname,user,password
pointbase:jdbc:pointbase:server://ip:port,dbname,user,password
com.pointBase.jdbc.jdbcUniverSqlDriver
DriverManager类是驱动程序管理器类,所有方法都是静态的,一个statement对象在同一时刻只有一个打开的ResultSet对象,在
statement接口中定义的所有executeXXX()方法都隐含地关闭statement当前的ResultSet对象,如果你要执行多个查询语句,并且需
要同时对它们的结果集进行操作,那么你必须使用多个statement对象。
DataSource例子:
javax.naming.context ctx = new javax.naming.InitialContext();
//JNDI名是相对于java:comp/env上下文的,因此在程序中利用JNDI名查询数据源对象时,要加上java:comp/env/
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("java:comp/env/bookstore");
java.sql.Connection conn = ds.getConnection();
JDBC驱动程序的类型:
JDBC-ODBC桥;部分本地API,部分JAVA驱动程序;JDBC网络纯JAVA驱动程序;本地协议纯JAVA驱动程序。
最后一种是访问数据库效率最高的。目前应用最多的也是这种。
不同数据库的连接URL如下:
sqlserver:jdbc:microsoft:sqlserver://localhost:1433;databasename=pubs
ORACLE:jdbc:oracle:thin:@localhost:1521:ORCL
mysql:jdbc:mysql://localhost:3306/databasename
CallableStatement对象用于执行SQL存储过程。
CallableStatement cstmt = conn.prepareCall("call p_changesal(?,?)");
cstmt.registerOutParameter(2, java.sql.Types.INTERGER);//注册OUT类型的返回参数
cstmt.setInt(1, 98);
cstmt.execute();
int sal = cstmt.getInt(2);
可以调用ResultSet.getMetaData()方法来获取ResultSetMetaData对象,再获取元数据。
一个Statement对象在同一时刻只有一个打开的ResultSet对象,在Statement接口中定义的所有executeXXX()方法都隐含地关闭Statement当前的ResultSet对象。如果你要执行多个查询语句,并且需要同时对它们的结果集进行操作,那么你必须使用多个Statement对象。
连接池技术预先建立多个数据库连接对象,然后将连接对象保存到连接池中,当客户请求到时,从池中取出一个连接对象为客户服务,请求完成后,客户程序调用close()方法,将连接对象放回池中。
常用端口:ftp:21 telnet:23 oracle:1521 mysql:3306 sqlserver:1433
注册数据库驱动的3种方式:
1,Class.forName( driverName ) 如:Class.forName("oracle.jdbc.driver.OracleDriver"):
2,Driver drv = new DriverConstructor();
DriverManager.registerDriver(drv);
如:Driver drv = new Oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver( drv );
3,java -Djdbc.drivers = oracle.jdbc.driver.OracleDriver;这种方式只能注册一个driver,命令行注册方式
方法1最好
建立连接3种方式:
getConnection( String url ) //匿名访问
getConnection( url, Properties info) //要一个properties对
getConnection( url, username, password) //最常用
PreparedStatement继承自Statement
Statement 1,不适合有多个参数的SQL;2,不适合重复执行同构的SQL
Statement tem = conn.createStatement();
PreparedStatement pstm = conn.prepareStatement("select * from t_user where id = ?");
pstm.setString(1, "21"); //下标从1开始
pstm.executeQuery();
CallableStatement:专用于调用服务器的存储过程
Statement里的方法:
executeQuery( sql ) 返回ResultSet
execute( sql ) 返回boolean,是否有ResultSet返回
executeUpdate( sql ) 返回int,影响的记录行数
字符转换:
java -------------> oracle:ISO-8859-1
Unicode:gb2312(GBK)
如:String name = "张三";
gb2312---->ISO-8859-1:
String newName = new String(name.getBytes("gb2312"), "ISO-8859-1");
ISO-8859-1------->gb2312:
String newName = new String(name.getBytes("ISO-8859-1"), "gb2312");
从ResultSet里面取值:
while(rs.next()){
String name = rs.getString("name");
}
关闭:
if(null != rs){
try{
rs.close();
}catch(Exception e){
}
}
statement,connection一样要先判断非空,后关闭
SQLWarning:理论上的,不影响程序执行,不用处理;
SQLException里的方法:getErrorCode:返回错误码;getMessage:返回错误信息
元数据:DatabaseMetaData,ResultSetMetaData
conn.getMetaData(); rs.getMetaData();
查看数据库中表的信息
事务处理流程:
1,关闭自动提交;2,执行操作;3,处理数据;rollback或commit;4,打开自动提交
commit不仅是原有事务的结束,也是新事务的开始。
并发控制:
事务级别:transaction_none; transaction_read_uncommitted(默认); transaction_read_committed:解决脏读dirty read
transaction_repeateable_read:解决不可重复读的问题:non_repeated read
transaction_serializable:解决幻读:phantom read
oracle只支持read_commit和serializable
例如:conn.setTransactionIsolation( Connection.TRANSACTION_READ_COMMITTED );
回滚集的问题:
CONCUR_READ_ONLY, CONCUR_UPDATEABLE:
用来指定可不可以修改数据库:
TYPE_FORWARD_ONLY 默认
TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENITIVE
用来指定Result能不能滚动
可以用refreshRow刷新当前行。
例:Statement stm = con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATEABLE);
定位方法:全部返回boolean,除afterLast(), beforeFirst()复位,返回void
absolute(int row) 传输绝对定位
first(), last(), next(), previous()向前一位
relative(int ) 相对定位
isAfterLast(), isBeforeFirst(), isFirst(), isLast();
注意:指针一开始是指在第一行的前面。
可更新结果集:
rs.updateInt(1, 9911); //更新当前行
rs.updateString("name", "tony");
rs.updateRow(); //修改生效,不调用则无效
rs.absolute(10);
rs.deleteRow(); //删除第10条记录
rs.cancelRowUpdates(); //放弃修改,删除还是会生效
插入新行
rs.moveToInsertRow(); //创建一个空记录
rs.updateInt("id", 11);
rs.updateString("name", "rose");
rs.insertRow();
rs.moveToCurrentRow(); //修改生效
rs没有主键则不能插入数据,必须包含所有的无默认值的非空字段,只能查一个表,不能连接查询,查询结果必须包含主键
如果是插入的话,必须选择表中所有不能为空的列。
批量处理:batch
con.setAutoCommit(false); //关闭自动提交
Statement stm = con.createStatement();
stm.addBatch("insert into t_user(id) value(11)");
stm.addBatch(" ... ");
int[] results = stm.executeBatch(); //返回所有成功的操作结果
con.commit();
con.setAutoCommit(true); //恢复自动提交
高级数据类型:
Blob ------ SQL Blob //大二进制对象 binary large object
Clob ------ SQL Clob //大文本二进制对象character large object
Array ----- SQL Array
Struct ---- SQL structure Type
Ref ------- SQL REF
方法:getXXX, setXXX, updateXXX
步骤:1,获得数据库连接,2,向表中插入一个空的Blog字段,3,获得Blob的输出流,4,通过输入流将数据写入数据库
如:
try{
conn.setAutoCommit(false);
Blob blob = null;
PreparedStatement pstm = conn.prepareStatement("insert into t_blob(id,filename,blobData) value
(?,?,empty_blob())"); //empty_blob()函数由oracle提供,用来创建空对象
pstm.setInt(1,10);
pstm.setString(2,"d:/hello.mp3");
pstm.executeUpdate(); //插入空值
pstm.close();
pstm = conn.prepareStatement("select blobData from u_blob where filename = ? for update"); //for update
同步必须使用,只能在查询时使用
pstm.setString(1, "d:/hello.mp3");
rs = pstm.executeQuery();
if(rs.next()){
Blob b = rs.getBlob();
oracle.sql.BLOB ob = (oracle.sql.BLOB)b;
OutputStream os = ob.getBinaryOutputStream();
InputStream is = new FileInputStream("d:/hello.mp3");
byte[] buffer = new byte[4096];
int len = 0;
while(true){
len = is.read(buffer);
if(-1 == len) break;
os.write(buffer, 0, len);
}
is.close();
os.close();
conn.commit();
}
}catch(Exception e){
conn.rollback();
}finally{
}
查询:
conn.setAutoCommit(false);
pstm = conn.prepareStatement("select blobData from u_blob where name = ? for update");
rs = pstm.executeQuery();
if(rs.next()){
blob b = rs.getBlob(1);
InputStream is = b.getBinaryStream();
OutputStream os = new FileOutputStream(path);
byte[] bb = new byte[4096];
int len = 0;
while(true){
len = is.read(bb);
if(len == -1) break;
os.write(bb, 0, len);
}
}
DataSource
WebLogic:services----->JDBC---->connection pool
JNDI:java naming directory interface api
用DataSource建立connection步骤:1,获得数据库连接,2,支持连接池,3,通常可以支持JNDI,4,支持分布式事务
OID:object id:对象在数据库中的ID
OOAD:object orient analyze and design面向对象的分析与设计
ODBC:open database connectivity:开放的数据库连接
JDBC:java database connectivity:java数据库连接
JDBC驱动程序可分为4类:
1,JDBC-ODBC桥; 2,部分本地API,部分JAVA驱动程序; 3,JDBC网络纯JAVA驱动程序; 4,本地协议纯JAVA驱
动程序,这个效率最高
Driver接口:
SQLSERVER:com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc:microsoft:sqlserver://IP:1433;数据库名,用户名,密码
MySQL:com.mysql.jdbc.Driver
jdbc:mysql://IP:3306/数据库名,用户名,密码
DB2:com.ibm.db2.jdbc.app.DB2Driver()
jdbc:db2://IP:端口/数据库名,用户名,密码
oracle:jdbc:oracle:thin:@IP:PORT,DBname,user,password
pointbase:jdbc:pointbase:server://ip:port,dbname,user,password
com.pointBase.jdbc.jdbcUniverSqlDriver
DriverManager类是驱动程序管理器类,所有方法都是静态的,一个statement对象在同一时刻只有一个打开的ResultSet对象,在
statement接口中定义的所有executeXXX()方法都隐含地关闭statement当前的ResultSet对象,如果你要执行多个查询语句,并且需
要同时对它们的结果集进行操作,那么你必须使用多个statement对象。
DataSource例子:
javax.naming.context ctx = new javax.naming.InitialContext();
//JNDI名是相对于java:comp/env上下文的,因此在程序中利用JNDI名查询数据源对象时,要加上java:comp/env/
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("java:comp/env/bookstore");
java.sql.Connection conn = ds.getConnection();
发表评论
-
Weblogic10.x部署Spring3、Spring Data JPA
2013-09-02 12:00 3236项目中使用了Spring3、Spring Data JPA在 ... -
Spring3 JmsTemplate与MQ的集成
2013-09-02 11:58 8935基于IBM的产品一向对开发者不太友好,特此记录一下Sprin ... -
Mybatis分页-利用Mybatis Generator插件生成基于数据库方言的分页语句,统计记录总数
2011-12-02 11:32 27218众所周知,Mybatis本身没有提供基于数据库方言的分 ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解
2011-09-20 14:19 1285在项目中总会遇到 ... -
关于UnsupportedOperationException异常
2011-04-20 13:00 1383我们在使用collection框架 ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解【转】
2011-03-10 11:01 935在项目中总会遇到一些 ... -
XFire开发指南
2010-12-12 16:58 1110一本写的不错的教程。 -
Java基于Schema验证xml
2010-09-19 14:32 4475现在基于webservice的接口 ... -
spring 配置log4j
2010-09-05 16:33 1167<!--如果不定义webAppRoo ... -
javadoc注释规范
2010-09-05 16:32 1167一. Java 文档 // 注释一 ... -
spring 任务
2010-08-25 12:36 1227<!-- 任务从此处开始 ... -
通过观察者模式和Reactor模式深入理解JAVA NIO 线程
2010-08-23 15:22 5768Java NIO非堵塞应用通常 ... -
JAVA对文件和文件夹的操作代码示例
2010-08-04 13:00 1371JAVA文件操作类和文件夹的操作代码实例,包括读取文本文件内容 ... -
Java编码浅析(注意区分三个概念)
2010-08-04 12:21 931Java与Unicode: Java的class ... -
Java路径问题最终解决方案之一
2010-08-04 11:43 788Java的路径问题,非常难 ... -
quartz轮询未按间隔时间执行解决方法
2010-05-24 22:19 4647前几日调试一个有些年纪的发送短信的war包,采用的是quart ... -
JSP页面缓存技术浏览器缓存
2009-04-10 14:42 5511一、概述 缓存的思想可以应用在软件分层的各个层面。它是 ...
相关推荐
JDBC读写Oracle的CLOB字段
为了将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中,我们需要使用Java 语言和 JDBC 驱动程序。下面是一个示例代码,演示如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中: ...
在Java的数据库编程中,JDBC(Java Database Connectivity)是一个重要的接口,用于与各种数据库进行交互。当涉及到处理大型对象...无论是直接使用JDBC还是结合ORM框架,都可以灵活地实现对Blob和Clob的读写操作。
在Java的JDBC环境中,处理Oracle数据库中的CLOB(Character Large Object)字段是一项常见的任务,尤其是在存储大量文本数据时。CLOB类型用于存储超过4000个字符的字符串数据。以下是对`jdbc`处理`oracle`的`clob`...
对于CLOB和BLOB字段,Oracle JDBC驱动提供了`oracle.jdbc.driver.OracleClob`和`oracle.jdbc.driver.OracleBlob`类,它们实现了Java的标准接口`java.sql.Clob`和`java.sql.Blob`。这两个接口提供了读取和写入大数据...
本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`ClobType`和`BlobType`来映射Clob和Blob。在实体类中,你需要定义...
这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种特殊对象,用于存储大对象(LOB)。Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理...
本文将详细介绍如何使用Hibernate和JDBC读取和存储Oracle数据库中的Blob对象。 ### 1. Hibernate Blob操作 在Hibernate中,Blob对象通常与Java的`java.sql.Blob`接口相对应。在实体类中,你可以定义一个Blob类型的...
在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。
- **使用Oracle特定的Blob处理**:Oracle提供了`oracle.sql.BLOB`类,它具有更高级别的功能,如直接从文件系统读写Blob,可以减少内存消耗。 在实际应用中,"batchinsert"可能是一个包含示例代码的文件,展示了如何...
- **大对象处理**:讲解了如何通过JDBC处理Oracle的大对象(LOBs),如BLOB、CLOB和NCLOB。 - **序列与触发器**:介绍了Oracle数据库中的序列和触发器的使用方法,以及如何通过JDBC与它们进行交互。 - **数据类型...
本教程将详细介绍如何在 Java 中使用 JDBC 和 JNDI 连接访问 Oracle 数据库,对 CLOB 字段进行读写操作。 首先,我们创建两个测试表,一个包含 BLOB 字段,一个包含 CLOB 字段: ```sql CREATE TABLE TESTBLOB ( ...
在使用Spring与Oracle的BLOB字段交互时,确保正确配置数据源和JDBC驱动。同时,Oracle数据库的特定特性,如LOB缓存策略、LOB的生命周期管理等,也需要根据项目需求进行适当调整。 总之,Spring和Oracle结合处理BLOB...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其...总的来说,掌握Oracle的常用函数和JDBC的基本操作是Java开发者必备的技能,这有助于高效地实现数据库的读写操作,并与各种类型的数据库进行无缝连接。
- 支持BLOB、CLOB、NCLOB等大型对象的读写。 - 支持Oracle的分区表和索引。 - 提供Oracle的高级特性,如游标、存储过程、触发器、事务管理等。 - 支持Oracle的分布式事务处理(DTP)。 - 支持Oracle的透明应用故障...
同时,对于大数据量的CLOB操作,可能需要优化数据库性能,如使用BLOB(Binary Large Object)存储二进制数据,或者分批读写以减少内存占用。 总之,Base64编码和Oracle 11g的CLOB数据类型在Java开发中扮演着重要...