- 浏览: 1253460 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (461)
- 心得体会 (166)
- Hibernate (9)
- Spring (12)
- Struts1 (3)
- Ajax (4)
- Java (54)
- 其他技术 (21)
- 数据库 (29)
- EXT (0)
- Struts2 (7)
- Xml (3)
- HTML (5)
- JavaScript (12)
- 面试相关 (3)
- BLOG (11)
- 计算机 (11)
- PMP (0)
- OGNL (1)
- LINUX (79)
- AIX (1)
- Ubuntu (14)
- Android (1)
- hadoop (3)
- LINUX debian (3)
- 心得体会 eclipse (2)
- JSTL (1)
- 心得体会 hadoop cdh3u5 (2)
- maven (5)
- Hive (1)
- 心得体会 工具使用 (3)
- spring data jpa Query By Example(QBE) (1)
- nginx (2)
- Apache (1)
- mysql (6)
- LINUX mysql (2)
- freemaker (1)
- 心得体会 FastDFS Nginx 断点续传 (1)
- LINUX FastDFS Nginx 断点续传 (1)
- 心得体会 Mybatis (2)
- 心得体会 mysql (4)
- php (1)
- logback 简介 (5)
- EL (1)
- Tomcat (2)
- win7 (1)
- LINUX maven (1)
- scrumworks (1)
- linux nginx (6)
- svn linux (1)
- mac (3)
- mac git (1)
- git (1)
- nexus (2)
- golang (1)
- LINUX Redis (1)
- mac oracle (1)
最新评论
-
a785975139:
有用
MySQL Error :SHOW PROFILES -
yijiulove:
弄了半天,参照你的方法解决了.特来感谢,知道可能是先加载,但是 ...
Spring和Mybatis整合时无法读取properties的处理方案 -
chenjinqi1987:
Missing com.sun.jdmk:jmxtools:jar:1.2.1 -
leifeng2:
请问怎么使用,运行之后d盘符没有生产音频文件呢?
java录音程序 -
sundful:
chenghong726 写道你好,我也遇到你这样的问题,按照 ...
Spring和Mybatis整合时无法读取properties的处理方案
在访问Oracle 数据库,对Oracle 的BLOB 和CLOB 进行操作的时候,当通过Oracle JDBC Driver 来调用的时,如下所例:
Driver myDriver = (Driver) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); conn = myDriver.connect("jdbc:oracle:thin:" , props); Statement stmt = conn.createStatement(); stmt.execute("select blob_content from lobtest where id=1"); ResultSet rs = stmt.getResultSet(); System.out.println("ResultSet result:"+rs); while ( rs.next() ) ...{ System.out.println("BLOB:"+rs.getBlob("blob_content")); myBlob = (oracle.sql.BLOB)rs.getBlob("blob_content"); }
返回的数据对象正确,是oracle.sql.BLOB 对象,然后可以使用该对象进行方法访问。
但当使用Oracle JDBC Driver 配置连接池后,使用DataSource 取得数据库连接之后,查询CLOB 数据,赋值给oracle.sql.CLOB 的对象,这是就会报类型转换错误。
在网络上有相应的解决方案,但都是依赖于某一种应用服务器所提供的oracle连接环境。
下面是一个比较好的解决方案:
1。必须有支持jdbc3.0以上规范的oracle驱动。
2。更新blob字段数据
public void updateBlob(String tableName, String blobFeild, String pryKey, String pryKeyValue, byte[] blob) throws IOException, SQLException ...{ Statement stmt = null; ResultSet rs = null; try ...{ stmt = conn.createStatement(); String sql = "UPDATE " + tableName + " SET " + blobFeild + "=EMPTY_BLOB() WHERE " + pryKey + "='" + pryKeyValue + "'"; // 如果参数blob为null,清空blob值;否则先清空blob值,然后插入新的blob值。 if (blob == null) ...{ stmt.executeUpdate(sql); } else ...{ stmt.executeUpdate(sql); sql = "SELECT " + blobFeild + " FROM " + tableName + " WHERE " + pryKey + "='" + pryKeyValue + "' FOR UPDATE"; rs = stmt.executeQuery(sql); if (rs.next()) ...{ Blob inBlob = rs.getBlob(blobFeild); int len = inBlob.setBytes(1, blob); log.debug("已成功保存BLOB大对象:" + len / 1024 + "KB"); } } } finally ...{ DbUtils.close(rs); DbUtils.close(stmt); } }
3。获取blob字段数据
public byte[] findBlob(String tableName, String blobFeild, String pryKey, String pryKeyValue) throws SQLException ...{ byte[] blob = null; Statement stmt = null; String sql = "SELECT " + blobFeild + " FROM " + tableName + " WHERE " + pryKey + "='" + pryKeyValue + "'"; ResultSet rs = null; try ...{ stmt = conn.createStatement(); rs = stmt.executeQuery(sql); if (rs.next()) ...{ Blob outBlob = rs.getBlob(blobFeild); if (outBlob != null && outBlob.length() > 0) ...{ blob = outBlob.getBytes(1, (int) outBlob.length()); } } } finally ...{ DbUtils.close(rs); DbUtils.close(stmt); } return blob; }
4。更新clob字段数据
public void updateClob(String tableName, String clobFeild, String pryKey, String pryKeyValue, String clob) throws IOException, SQLException ...{ Statement stmt = null; ResultSet rs = null; try ...{ stmt = conn.createStatement(); String sql = "UPDATE " + tableName + " SET " + clobFeild + "=EMPTY_CLOB() WHERE " + pryKey + "='" + pryKeyValue + "'"; // 如果参数clob为null,清空clob值;否则先清空clob值,然后插入新的clob值。 if (clob == null) ...{ stmt.executeUpdate(sql); } else ...{ stmt.executeUpdate(sql); sql = "SELECT " + clobFeild + " FROM " + tableName + " WHERE " + pryKey + "='" + pryKeyValue + "' FOR UPDATE"; rs = stmt.executeQuery(sql); if (rs.next()) ...{ Clob inClob = rs.getClob(clobFeild); int len = inClob.setString(1, clob); log.debug("已成功保存CLOB大对象:" + len / 1024 + "KB"); } } } finally ...{ DbUtils.close(rs); DbUtils.close(stmt); } }
5。获取clob字段数据
public String findClob(String tableName, String clobFeild, String pryKey, String pryKeyValue) throws SQLException ...{ String clob = ""; Statement stmt = null; String sql = "SELECT " + clobFeild + " FROM " + tableName + " WHERE " + pryKey + "='" + pryKeyValue + "'"; ResultSet rs = null; try ...{ stmt = conn.createStatement(); rs = stmt.executeQuery(sql); if (rs.next()) ...{ Clob outClob = rs.getClob(clobFeild); if (outClob != null && outClob.length() > 0) ...{ clob = outClob.getSubString(1, pryKeyValue.length()); } } } finally ...{ DbUtils.close(rs); DbUtils.close(stmt); } return clob; }
采用以上这种方式可以避免对连接池提供方的依赖。
发表评论
-
MySQL 5.6 my.cnf 配置
2015-11-03 17:48 3324[client] port = 3306 socket ... -
mysql将查询结果导出csv文件的方法into outfile
2015-10-22 15:41 1319例句: select * from table_name ... -
MySQL时区设置
2013-11-15 18:20 1329MySQL 时区默认是服务器的时区。可以通过以下命令查看 ... -
MYSQL存储过程中 表名 使用变量
2013-08-21 15:44 2187# 该存储过程定义了几个传入参数,前缀都是para ... -
MySQL Error :SHOW PROFILES
2011-05-20 16:51 3240在使用SQLyog Enterprise V8.1 英文版的时 ... -
Mysql连接问题:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
2011-05-16 14:08 25641com.mysql.jdbc.exceptions.jdbc4 ... -
Hibernate 使用内连接(hql) 使用左外连接 命名的hql 命名的sql 调用存储过程Oracle 等
2011-03-22 11:24 3065使用内连接(hql)from Product p inne ... -
MYSQL错误 NO.1130 ERROR的解决
2010-10-20 08:48 2616如果你想连接你的mysql的时候发生这个错误: ERROR ... -
解决Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'
2010-07-02 14:28 12382Mysql ERROR 1045 (28000): Acces ... -
linux忘记mysql root密码的解决方法
2010-07-02 14:27 1556方法如下: 1, 关闭mysql服务 /etc/init.d/ ... -
Oracle 创建表空间、创建用户以及授权、查看权限
2010-05-25 11:03 1578创建临时表空间 创建临时表空间 CREATE ... -
ORA-01720
2010-05-13 14:31 5330对我来说权限方面是本人最反感的部分之一,但作为开发DBA ... -
Windows下ORACLE的完全卸载
2010-05-13 08:24 1447Windows下ORACLE完全卸载: ... -
Oracle中创建视图,提示无权限 ORA-01031
2010-05-11 17:24 4599今天在对表创建视图的时候,用户提示 ORA-01031用户权限 ... -
Oracle用户权限管理
2010-05-10 17:52 1477sys;//系统管理员,拥有最高权限 system ... -
oracle恢复误删除数据
2010-05-07 14:19 12511.曾经不小心把开发库的数据库表全部删除,当时吓的要死。结果找 ... -
java.net.bindexception:address already in use: connect
2010-04-19 14:01 2387解决方法: 在网络编程中,特别是在短时间内new的网络连接太多 ... -
Powerdesigner连接Mysql数据库配置图解
2010-03-03 11:02 4439Powerdesigner 由 ... -
PL/SQL Developer 不得不知的技巧
2009-04-24 17:43 14661、PL/SQL Developer记住登 ... -
PowerDesigner 12 官方视频教程
2009-02-10 10:08 8730最近找PowerDesigner的相关资料.今天找到这个好东东 ...
相关推荐
随着硬件价格的下降和数据应用的增加,数据库逐渐成为所有数据的中心存储仓库。Oracle从8i中使用了LOB(大对象)这种特殊的数据类型,实现了对这些数据的存储。 LOB是以对象的形式出现的,不同于以往的普通数据结构...
- **第3章:SQL基础** —— 介绍SQL语言的基础知识,包括数据定义语言(DDL)和数据操纵语言(DML)。 - **第4章:JDBC简介** —— 介绍Java数据库连接(JDBC)的概念及其在Java程序中访问数据库的作用。 2. **第二部分...
- **LOB支持**:在处理大型文本或二进制数据时,Oracle的BLOB (Binary Large Object) 和 CLOB (Character Large Object) 类型非常有用。JDBC提供了一套API来处理这些数据类型,包括`setObject()`、`setBinaryStream...
10. **应用程序开发接口**:熟悉DB2提供的各种应用程序接口,如JDBC、ODBC和.NET,以及如何使用这些接口进行数据库连接和数据操作。 通过深入学习以上知识点,并结合"700_exam"中的考题进行实践,你将更充分地准备...
文档会介绍如何配置这些特性,以保障数据库的连续性和数据完整性。 8. Oracle工具:Oracle提供了许多管理和开发工具,如SQL*Plus、Enterprise Manager、Developer Studio等。这些工具的使用方法和功能将在文档中...
- **高级数据类型**:如BLOB和CLOB等大型对象的支持。 - **元数据**:元数据是指关于数据的数据,例如表结构、列信息等。JDBC提供了获取这些元数据的方法。 #### 五、JDBC可选包 - **数据源**:数据源接口(`javax...
它可能包含特定于SQL Server的函数和特性支持,例如对存储过程、事务管理、大型对象(如BLOB和CLOB)的支持,以及性能优化等。 3. msutil.jar:这个文件通常包含一些实用工具类,用于辅助数据库操作,如数据类型...
Oracle JDBC驱动提供了一组特定于Oracle的类和接口,如OracleConnection、OracleCallableStatement等,这些扩展了标准JDBC接口,以支持Oracle特有的功能,如存储过程、游标、BLOB/CLOB处理等。 MyEclipse作为IDE,...
考生需理解JDBC基本概念和工作原理,能够优化设置FetchSize、Statement缓存和结果集缓存,熟练使用PreparedStatement和CallableStatement进行数据库操作,包括对Clob和Blob的支持。 最后,JSP技术要求考生能安装和...
- Blob 和 Clob 类型的支持。 - 元数据处理。 - **RowSet Implementation** - RowSet 的不同实现。 - 如何使用 JdbcRowSet 和 WebRowSet。 - **JDBC 和应用架构** - JDBC 在不同应用层中的作用。 - 与 EJB ...
11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 ...
11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 ...
11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 ...
11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 ...
普通静态SQL语句包括数据操纵和数据查询。 ###### 5.1.1 数据操纵 数据操纵包括插入(`INSERT`)、更新(`UPDATE`)和删除(`DELETE`)。 ```sql INSERT INTO my_table (id, value) VALUES (1, 100); UPDATE my_table ...