- 浏览: 136963 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
haizhilan:
[b][/b]
flex整合spring,hibernate思路 -
liran_java:
太牛B了
Tomcat5不保留SESSION.ser的具体配置 -
瀚愚:
EDrawMax
能画很漂亮的图,不过要收费的,在公司不让用, ...
大家平时一般都用啥工具画架构图呀(忽悠客户的那种) -
captain:
mikeandmore 写道freemind?
我一般用fre ...
大家平时一般都用啥工具画架构图呀(忽悠客户的那种) -
iamlibo:
vp_uml
大家平时一般都用啥工具画架构图呀(忽悠客户的那种)
在网上闲逛找到了解决方案:
现在3.x中对blob和clob增加了org.hibernate.lob.SerializableBlob和org.hibernate.lob.SerializableClob类的封装。
其次如果你将前面的测试程序放到weblogic的容器中通过weblogic的数据源得到连接的话,你会发现oracle.sql.BLOB blob = (oracle.sql.BLOB)person.getImage();和 oracle.sql.CLOB clob = (oracle.sql.CLOB)person.getArticle();这俩行会出错,原因就是weblogic进行了包装。
现在将以上两个问题的综合解决方案用以下代码说明:
for (int i = 0; i < 10; i++) {
LargeObject large = new LargeObject();
large.setId(i + "");
large.setName("林意炜");
// 插入一个小数据数据
large.setImage(Hibernate.createBlob(new byte[1]));
large.setArticle(Hibernate.createClob(" "));
session.save(large);
session.flush();
// 锁定该记录
session.refresh(large, LockMode.UPGRADE);
// 插入图片数据
String fileName = "E:/AAA/" + i + ".jpg";
SerializableBlob sb = (SerializableBlob)large.getImage();
java.sql.Blob wrapBlob = sb.getWrappedBlob();
// 通过非weblogic容器中数据源获得连接的情况
if(wrapBlob instanceof oracle.sql.BLOB){
oracle.sql.BLOB blob = (oracle.sql.BLOB) wrapBlob;
OutputStream out = blob.getBinaryOutputStream();
out.write(getData(fileName));
out.close();
}
// 使用weblogic的Oracle Thin driver类型连接池,驱动类名:oracle.jdbc.OracleDriver
else if(wrapBlob instanceof weblogic.jdbc.vendor.oracle.OracleThinBlob){
OracleThinBlob blob = (OracleThinBlob)wrapBlob;
OutputStream out = blob.getBinaryOutputStream();
out.write(getData(fileName));
out.close();
}
// 插入文章数据
fileName = "E:/AAA/" + i + ".java";
SerializableClob cb = (SerializableClob)large.getArticle();
java.sql.Clob wrapClob = cb.getWrappedClob();
// 通过非weblogic容器中数据源获得连接的情况
if(wrapClob instanceof oracle.sql.CLOB){
oracle.sql.CLOB clob = (oracle.sql.CLOB) wrapClob;
Writer writer = clob.getCharacterOutputStream();
String article = new String(getData(fileName));
writer.write(article);
writer.close();
}
// 使用weblogic的Oracle Thin driver类型连接池,驱动类名:oracle.jdbc.OracleDriver
else if(wrapClob instanceof weblogic.jdbc.vendor.oracle.OracleThinClob){
OracleThinClob clob = (OracleThinClob)wrapClob;
Writer writer = clob.getCharacterOutputStream();
String article = new String(getData(fileName));
writer.write(article);
writer.close();
}
}
***************************************************
采用得是ORACLE9i数据库,Jboss或Weblogic。
JDBC采用ORACLE9i自带的Class12.jar
-------------
数据库结构:
--------------
BO采用xdoclet建立的:
注:valueString并不映射到数据库的CLOB字段,只是方便需要使用这个BO的人用GET、SET 处理这个巨长的CLOB字段
------------
xdocLet生成的XML文件:
--------------------
insert的代码:
-----------------
注:Weblogic必须使用weblogic.jdbc.vendor.oracle.OracleThinClob
---------------------
读取CLOB字段:
---------------
更新这个字段的代码:
现在3.x中对blob和clob增加了org.hibernate.lob.SerializableBlob和org.hibernate.lob.SerializableClob类的封装。
其次如果你将前面的测试程序放到weblogic的容器中通过weblogic的数据源得到连接的话,你会发现oracle.sql.BLOB blob = (oracle.sql.BLOB)person.getImage();和 oracle.sql.CLOB clob = (oracle.sql.CLOB)person.getArticle();这俩行会出错,原因就是weblogic进行了包装。
现在将以上两个问题的综合解决方案用以下代码说明:
for (int i = 0; i < 10; i++) {
LargeObject large = new LargeObject();
large.setId(i + "");
large.setName("林意炜");
// 插入一个小数据数据
large.setImage(Hibernate.createBlob(new byte[1]));
large.setArticle(Hibernate.createClob(" "));
session.save(large);
session.flush();
// 锁定该记录
session.refresh(large, LockMode.UPGRADE);
// 插入图片数据
String fileName = "E:/AAA/" + i + ".jpg";
SerializableBlob sb = (SerializableBlob)large.getImage();
java.sql.Blob wrapBlob = sb.getWrappedBlob();
// 通过非weblogic容器中数据源获得连接的情况
if(wrapBlob instanceof oracle.sql.BLOB){
oracle.sql.BLOB blob = (oracle.sql.BLOB) wrapBlob;
OutputStream out = blob.getBinaryOutputStream();
out.write(getData(fileName));
out.close();
}
// 使用weblogic的Oracle Thin driver类型连接池,驱动类名:oracle.jdbc.OracleDriver
else if(wrapBlob instanceof weblogic.jdbc.vendor.oracle.OracleThinBlob){
OracleThinBlob blob = (OracleThinBlob)wrapBlob;
OutputStream out = blob.getBinaryOutputStream();
out.write(getData(fileName));
out.close();
}
// 插入文章数据
fileName = "E:/AAA/" + i + ".java";
SerializableClob cb = (SerializableClob)large.getArticle();
java.sql.Clob wrapClob = cb.getWrappedClob();
// 通过非weblogic容器中数据源获得连接的情况
if(wrapClob instanceof oracle.sql.CLOB){
oracle.sql.CLOB clob = (oracle.sql.CLOB) wrapClob;
Writer writer = clob.getCharacterOutputStream();
String article = new String(getData(fileName));
writer.write(article);
writer.close();
}
// 使用weblogic的Oracle Thin driver类型连接池,驱动类名:oracle.jdbc.OracleDriver
else if(wrapClob instanceof weblogic.jdbc.vendor.oracle.OracleThinClob){
OracleThinClob clob = (OracleThinClob)wrapClob;
Writer writer = clob.getCharacterOutputStream();
String article = new String(getData(fileName));
writer.write(article);
writer.close();
}
}
***************************************************
采用得是ORACLE9i数据库,Jboss或Weblogic。
JDBC采用ORACLE9i自带的Class12.jar
-------------
数据库结构:
java代码: |
CREATE TABLE SNCPARAMETERS ( ID NUMBER(<span style="COLOR: #000000" ?="">19) NOT <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">NULL, SNCID NUMBER(<span style="COLOR: #000000" ?="">19), NAME VARCHAR2(<span style="COLOR: #000000" ?="">255), VALUE CLOB ) |
--------------
BO采用xdoclet建立的:
java代码: |
<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">class SNCParameters <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">extends BaseObject { /** * Returns the id. * * @return long * @hibernate.id * column = "id" * type = "long" * generator-class = "native" * unsaved-value = "null" */ <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="COLOR: #aaaadd" ?="">Long getId() { <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">return id; } /** * Sets the Id attribute of the SNCParameters object * * @param id The new Id value */ <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">void setId(<span style="COLOR: #aaaadd" ?="">Long id) { this.id = id; } /** * Returns the name. * * @return String * * @hibernate.property * column = "name" * type = "string" * not-null = "true" * unique = "false" */ <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="COLOR: #aaaadd" ?="">String getName() { <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">return name; } /** * Sets the Name attribute of the SNCParameters object * * @param name The new Name value */ <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">void setName(<span style="COLOR: #aaaadd" ?="">String name) { this.name = name; } /** * Returns the sncId. * * @return Long * * @hibernate.property * column = "sncId" * type = "long" * not-null = "true" * unique = "false" */ <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="COLOR: #aaaadd" ?="">Long getSncId() { <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">return sncId; } /** * Sets the SncId attribute of the SNCParameters object * * @param sncId The new SncId value */ <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">void setSncId(<span style="COLOR: #aaaadd" ?="">Long sncId) { this.sncId = sncId; } /** * Returns the values. * * @return Clob * * @hibernate.property * column = "value" * type = "clob" * not-null = "true" * unique = "false" */ <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="COLOR: #aaaadd" ?="">Clob getValue() { <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">return value; } /** * Sets the Values attribute of the SNCParameters object * * @param values The new Values value */ <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">void setValue(<span style="COLOR: #aaaadd" ?="">Clob value) { this.value = value; } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">private<span style="COLOR: #aaaadd" ?="">Long id; <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">private<span style="COLOR: #aaaadd" ?="">Long sncId; <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">private<span style="COLOR: #aaaadd" ?="">String name; <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">private<span style="COLOR: #aaaadd" ?="">Clob value; <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">private<span style="COLOR: #aaaadd" ?="">String valueString; <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="COLOR: #aaaadd" ?="">String getValueString() { <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">return valueString; } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">void setValueString(<span style="COLOR: #aaaadd" ?="">String valueString) { this.valueString = valueString; } } |
注:valueString并不映射到数据库的CLOB字段,只是方便需要使用这个BO的人用GET、SET 处理这个巨长的CLOB字段
------------
xdocLet生成的XML文件:
java代码: |
<?xml version="<span style="COLOR: #000000" ?="">1.<span style="COLOR: #000000" ?="">0"?> <!DOCTYPE hibernate-mapping <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">class name="com.idncn.mc.bo.SNCParameters" table="SNCParameters" dynamic-update="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">false" dynamic-insert="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">false" > <id name="id" column="id" type="long" unsaved-value="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">null" > <generator <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">class="native"> </generator> </id> <property name="name" type="string" update="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">true" insert="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">true" column="name" not-<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">null="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">true" unique="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">false" /> <property name="sncId" type="long" update="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">true" insert="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">true" column="sncId" not-<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">null="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">true" unique="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">false" /> <property name="value" type="clob" update="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">true" insert="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">true" column="value" not-<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">null="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">true" unique="<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">false" /> </<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">class> </hibernate-mapping> |
--------------------
insert的代码:
java代码: |
<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="COLOR: #aaaadd" ?="">List batchAddSncParameters(<span style="COLOR: #aaaadd" ?="">List sncParametersList, <span style="COLOR: #aaaadd" ?="">Long sncId)<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">throws DbAccessException { logger.enterMethod(); <span style="COLOR: #aaaadd" ?="">List ret = <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new<span style="COLOR: #aaaadd" ?="">ArrayList(); <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">try { sess = getSession(); <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">if(sncParametersList != <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">null && sncParametersList.size() > <span style="COLOR: #000000" ?="">0) { <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">for(<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">int i = <span style="COLOR: #000000" ?="">0; i < sncParametersList.size(); i++) { SNCParameters cp = (SNCParameters) sncParametersList.get(i); long newId = -<span style="COLOR: #000000" ?="">1; <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">if(cp != <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">null) { SNCParameters cpNew = <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new SNCParameters(); cpNew.setSncId(sncId); cpNew.setName(cp.getName()); cpNew.setValue(Hibernate.createClob(" ")); newId = ((<span style="COLOR: #aaaadd" ?="">Long) sess.save(cpNew)).longValue(); sess.flush(); sess.refresh(cpNew, LockMode.UPGRADE); <span style="COLOR: #aaaadd" ?="">String content = cp.getValueString(); <span style="COLOR: #aaaadd" ?="">String appserver = <span style="COLOR: #aaaadd" ?="">System.getProperty("appserver", "jboss"); <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">if(!appserver.equalsIgnoreCase("jboss")) { //weblogic OracleThinClob clob = (OracleThinClob) cpNew.getValue(); java.io.Writer pw = clob.getCharacterOutputStream(); pw.write(content); pw.flush(); pw.close(); } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">else { //jboss oracle.sql.CLOB clob = (oracle.sql.CLOB) cpNew.getValue(); java.io.Writer pw = clob.getCharacterOutputStream(); pw.write(content); pw.flush(); pw.close(); } ret.add(<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new<span style="COLOR: #aaaadd" ?="">Long(newId)); } } } } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">catch(<span style="COLOR: #aaaadd" ?="">Exception e) { logger.error(e); ErrorReason errorReason = <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new ErrorReason(ErrorReason.INSERT_OBJECT_FAILED_REASON); throw <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new DbAccessException(DbAccessException.DBA_OPERATE_EXCEPTION, errorReason); } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">finally { closeSession(sess); logger.exitMethod(); } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">return ret; } |
-----------------
注:Weblogic必须使用weblogic.jdbc.vendor.oracle.OracleThinClob
---------------------
读取CLOB字段:
java代码: |
<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="COLOR: #aaaadd" ?="">List selectSncParametersBySncId(long sncId)<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">throws DbAccessException { logger.enterMethod(); <span style="COLOR: #aaaadd" ?="">List ret = <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new<span style="COLOR: #aaaadd" ?="">ArrayList(); <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">try { sess = getSession(); <span style="COLOR: #aaaadd" ?="">String query = "select cp from cp in <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">class com.idncn.mc.bo.SNCParameters where cp.sncId = ?"; logger.debug("SQL=" + query); <span style="COLOR: #aaaadd" ?="">List iter = sess.find(query, <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new<span style="COLOR: #aaaadd" ?="">Long(sncId), Hibernate.LONG); <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">for(<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">int i = <span style="COLOR: #000000" ?="">0; i < iter.size(); i++) { SNCParameters newCp = <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new SNCParameters(); SNCParameters cp = (SNCParameters)(iter.get(i)); logger.debug("after fetch:" + cp); newCp.setId(cp.getId()); newCp.setSncId(cp.getSncId()); newCp.setName(cp.getName()); java.sql.Clob clob = cp.getValue(); <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">if(clob != <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">null) { logger.debug("b===" + clob.length()); <span style="COLOR: #aaaadd" ?="">String b = clob.getSubString(<span style="COLOR: #000000" ?="">1, (<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">int) clob.length()); //logger.debug("b==="+b); newCp.setValueString(b); } ret.add(newCp); } } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">catch(<span style="COLOR: #aaaadd" ?="">Exception e) { logger.error(e); ErrorReason errorReason = <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new ErrorReason(ErrorReason.SELECT_FAILED_REASON); throw <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new DbAccessException(DbAccessException.DBA_OPERATE_EXCEPTION, errorReason); } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">finally { closeSession(sess); logger.exitMethod(); } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">return ret; } |
---------------
更新这个字段的代码:
java代码: |
<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">public<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">void updateSncParameters(SNCParameters newParam)<span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">throws DbAccessException { logger.enterMethod(); <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">try { sess = getSession(); <span style="COLOR: #aaaadd" ?="">Long id = newParam.getId(); SNCParameters pp = (SNCParameters) sess.load(SNCParameters.class, id, net.sf.hibernate.LockMode.UPGRADE); pp.setSncId(newParam.getSncId()); pp.setName(newParam.getName()); pp.setId(newParam.getId()); <span style="COLOR: #aaaadd" ?="">String newValue = newParam.getValueString(); logger.debug("Update Length =" + newValue.length()); <span style="COLOR: #aaaadd" ?="">String appserver = <span style="COLOR: #aaaadd" ?="">System.getProperty("appserver", "jboss"); logger.debug("appserver: " + appserver); <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">if(!appserver.equalsIgnoreCase("jboss")) { //weblogic OracleThinClob clob = (OracleThinClob) pp.getValue(); <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">if(pp != <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">null) { java.io.Writer pw = clob.getCharacterOutputStream(); pw.write(newValue); pw.flush(); pw.close(); } } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">else { //jboss oracle.sql.CLOB clob = (oracle.sql.CLOB) pp.getValue(); <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">if(pp != <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">null) { java.io.Writer pw = clob.getCharacterOutputStream(); pw.write(newValue); pw.flush(); pw.close(); } } } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">catch(<span style="COLOR: #aaaadd" ?="">Exception e) { logger.error(e); ErrorReason errorReason = <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new ErrorReason(ErrorReason.UPDATE_OBJECT_FAILED_REASON); throw <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">new DbAccessException(DbAccessException.DBA_OPERATE_EXCEPTION, errorReason); } <span style="FONT-WEIGHT: bold; COLOR: #990066" ?="">finally { closeSession(sess); logger.exitMethod(); } } |
相关推荐
下面将讨论解决dblink_clob字段异常的解决方案。 什么是dblink? DBLink是Oracle数据库中的一种机制,允许用户从一个数据库实例访问另一个数据库实例中的数据。DBLink提供了一种方式来访问远程数据库中的数据,而...
在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中。 Image 类型在 SQL Server 中的应用 在 SQL Server 中,Image 类型用于存储二进制大对象(BLOB),如图像、音频、视频...
在这个例子中,`your_clob_index_name`是你需要重建的索引名,`your_table`是包含CLOB字段的表名,而`clob_column`是CLOB类型字段的列名。 接下来,我们讨论用户表空间索引空间的修复。当表空间的空间不足或者需要...
接下来,我们来讨论Clob字段。Clob代表Character Large Object,是一种数据库字段类型,用于存储大文本数据,如长篇文章、HTML文档或XML文件。与BLOB(Binary Large Object)不同,Clob专门用于字符数据。 在数据库...
4. **问题与讨论**: - 引导性问题帮助学生建立基础概念,探究性问题深化理解,拓展性问题鼓励创新思维和实践操作。 5. **教学过程**: - 理论部分详细讲解各个组件及其参数设置,强调它们在实际操作中的应用。 ...
创建包含CLOB字段的表是第一步。例如,创建一个名为TEMP的表,包含一个CLOB类型的字段temp_clob,可以使用以下SQL语句: ```sql CREATE TABLE TEMP ( name VARCHAR2(200), age NUMBER, temp_clob CLOB ) ...
此外,对于频繁读取的CLOB字段,可以考虑将其索引或部分内容缓存。 最后,虽然Hibernate提供了便捷的接口,但在处理BLOB和CLOB时,还需要了解所用数据库的特性,因为不同的数据库可能有不同的限制和最佳实践。例如...
本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle数据库。 1. **BLOB与CLOB数据类型**: BLOB(Binary Large Object)存储二进制大对象,如图像、音频或视频文件。CLOB(Character Large Object)...
这个压缩包可能包含了用于演示或测试CLOB字段如何在Oracle数据库中创建、查询、更新和删除的脚本或应用程序。 在描述中同样提到了"test-clob.rar",这意味着文件的内容可能是一系列针对CLOB类型的实验或实例,用于...
在Delphi中,你可以使用TSQLiteDataset或类似组件来过滤CLOB字段。这里是一个示例: ```delphi var Dataset: TSQLiteDataset; begin Dataset := TSQLiteDataset.Create(nil); Dataset.Connection := ...
当Java应用程序需要将`String`数据存入Oracle数据库的CLOB字段时,可以使用JDBC的`PreparedStatement`和`setClob()`方法。例如: ```java String content = "这是要存储的字符串"; PreparedStatement pstmt = ...
其中,`imageData`是Blob字段,用于存储图片数据。 3. **读取图片并转换为Blob** 使用`FileInputStream`读取图片文件,然后将其转换为`Blob`对象。可以使用`PreparedStatement`的`setBlob()`方法将Blob对象设置为...
在JPA中,这些大数据字段通常被映射为Blob(二进制大对象)或Clob(字符大对象)。映射过程涉及到定义实体类中的属性,并使用特定的JPA注解(例如`@Lob`)来指示这些属性应如何与数据库中的大数据字段对应。通过这样...
在Liferay数据库模型中,CLOB字段可以作为字段类型出现,而在服务构建器生成的接口中,通常会有对应的getter和setter方法来操作CLOB数据。例如,`getHtmlContent()`和`setHtmlContent(Clob htmlContent)`。在业务...
具体做法是,查找并修改所有使用`oracle.sql.CLOB`或`empty_clob()`的地方,确保在操作CLOB字段时不会将达梦视为Oracle。示例代码如下: ```java // 原始代码 boolean isoracle = (statement.getDBType()).equals(...
Oracle数据库是全球广泛使用的数据库管理系统,以其稳定性和高性能...同时,对于其他相关的技术,如CLOB字段的处理、关键字作为字段名的使用、BLOB字段的读写等,也需要深入理解,以便在遇到复杂情况时能够应对自如。
文档中提到将XML数据存储在CLOB字段中,并通过SQL查询将其读取出来。这种方式在处理大量XML数据时非常有效。 3. DOM解析:文档对象模型(DOM,Document Object Model)是一个跨平台、语言无关的应用编程接口(API)...
接下来我们将详细讨论表结构、数据类型、数据存储方式以及ROWID。 1. 表结构与数据类型 - 表结构:表由行和列组成,每一行代表一条数据记录,每列对应一个特定的数据域,如字段名、数据类型、长度、约束和默认值。...
"源码"标签暗示了讨论可能涉及实际的Java代码示例,展示如何在实体类中应用Hibernate注解。"工具"标签则指出Hibernate作为一种广泛使用的开发工具,它的注解机制是Java开发者必备的知识之一。 【文件名称】:...
在"LOB字段的操作.txt"中,可能涵盖了BLOB(二进制大对象)、CLOB(字符大对象)和NCLOB(国家字符集的大对象)的插入、更新、读取和删除方法,以及如何优化LOB字段的性能。 4. **JDBC调用存储过程**:"jdbc调存储...