- 浏览: 494041 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (285)
- 数据库 (49)
- dwr (1)
- js (35)
- security (6)
- freemaker (4)
- 网站建设 (15)
- css (5)
- javaEE (56)
- 生活点滴 (12)
- 安装与配置 (16)
- ssh2 (13)
- 开源软件 (6)
- web 应用服务器 (6)
- 开发模式和设计模式 (2)
- linux (5)
- 项目管理 (7)
- 计算机杂症 (0)
- appScan (1)
- idea (3)
- android (1)
- java @override 报错处理 (1)
- lucene (5)
- java (2)
- groovy (1)
- Extjs (7)
- asp (2)
- php (2)
- Memcached (1)
- 名言 (1)
- 面试 (1)
- Jmeter (0)
- 微信支付 (1)
- app开发 (1)
- branch分支合并到trunk主干 (1)
- 自动化测试 (1)
- springClond (1)
- ELK (2)
最新评论
-
skykufo:
坑爹啊,我也因为写多了一个div,在ie8浪费了一天
jQuery加载(load、get、post)页面显示空白原因 -
yeyinzhu3211:
帅哥,我想问下,是怎么去除呀?能详细说明下吗?
IntelliJ IDEA 10.5.1 无法断点或停止不动 -
sshitaime:
怎么下载不了啊,能给我一个安装包吗
oracle 10g透明网关组件下载地址(新) -
fuanyu:
xiaohuafyle 写道被你的头像吓尿了 哥们有这么可怕呀 ...
netstat -aon -
wanlt_software:
谢谢。。。。。
oracle 10g透明网关组件下载地址(新)
最近学Oracle,正好单位OA中Word文件是将文件用BASE64方式编码后用CLOB型写入数据库的,因此有心测试JDBC对CLOB型的操作(百度的排版好像不太好用,凑合看吧)。
准备工作:
一、去http://commons.apache.org/codec/下载BASE64的编解码包
二、去http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc_10201.html下载10G以后的ojdbc14.jar,用9i自带的的ojdbc14.jar在使用第二种方法的时候不能超过4000字节
三、登录到Oracle,将hr用户解锁,建立测试表test,SQLPLUS怎么用俺就不说了
conn / as sysdba;
alter user hr account unlock;
alter user hr identified by hr;
create table test(c1 varchar2(10),t1 clob);
四、建立JAVA程序
import java.io.IOException;
import java.io.*;
import java.sql.*;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Base64Encode {
public static void main(String[] args) throws EncoderException,
DecoderException, IOException, SQLException {
//打开文件
FileInputStream fsin=new FileInputStream("oracle 体系结构.doc");
//看看可以读出多少字节
int fbytes=fsin.available();
//请求分配内存并读入文件到inbuf
byte[] inbuf=new byte[fbytes];
fsin.read(inbuf);
//关闭文件
fsin.close();
//新建一个BASE64编解码对象
Base64 base64 = new Base64();
//对inbuf中的内容进行编码
byte[] bytes = base64.encode(inbuf);
//测试写入数据库
dbwriter.writedb(bytes);
//从数据库读取数据
bytes=dbwriter.readdb();
//将读到的数据解码
byte[] outbuf=base64.decode(bytes);
//将解码后的数据输出到文件output.doc
FileOutputStream fsout=new FileOutputStream("output.doc");
fsout.write(outbuf);
fsout.flush();
fsout.close();
}
}
class dbwriter{
static Connection conn;
//方法一和方法二只能选一个编译
//方法一:使用游标对CLOB型进行操作,此方法网上流传甚广,虽然正确,但无比麻烦,对数据库的操作也很啰嗦
static void writedb(byte[] arg) throws SQLException,IOException
{
// 使用Class对象的forName方法动态加载类
try
{
Class.forName ("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
//连接Oracle
conn = DriverManager.getConnection ("jdbc:oracle:thin:@127.0.0.1:1521:student", "hr", "hr");
// @machine:port:SID, userid, password
//关闭自动提交,JDBC默认竟然是自动提交,嘿嘿,如果不关闭自动提交,后面更新数据时会出现更新顺序错误,ORACLE的错误号不记得了
conn.setAutoCommit(false);
//插入一行数据,必须先插入一个空的CLOB数据,便于后面获取CLOB的locator
PreparedStatement stmt = conn.prepareStatement("insert into test(c1,t1) values ('1',empty_clob())");
stmt.executeUpdate();
//注意SQL语句中的For update,使游标可更新,我对JAVA不熟,应该这样就是可更新游标了吧
stmt=conn.prepareStatement("select t1 from test where c1=? for update");
stmt.setString(1,"1");
ResultSet rset=stmt.executeQuery();
rset.next();
oracle.sql.CLOB lclob=(oracle.sql.CLOB)rset.getClob("t1");
//从CLOB型获取写入流
OutputStream writer = lclob.getAsciiOutputStream();
//将数据写入CLOB
writer.write(arg);
//关闭写入流
writer.close();
//提交等维护工作
conn.commit();
rset.close();
stmt.close();
conn.close();
}
//方法二:使用preparedStatement.setString()方法,比第一种方法简单清楚太多,推荐
static void writedb(byte[] arg) throws SQLException,IOException
{
// 使用Class对象的forName方法动态加载类
try
{
Class.forName ("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
conn = DriverManager.getConnection
("jdbc:oracle:thin:@127.0.0.1:1521:student", "hr", "hr");
// @machine:port:SID, userid, password
conn.setAutoCommit(false);
PreparedStatement stmt = conn.prepareStatement("insert into test(c1,t1) values ('1',?)");
stmt.setString(1,new String(arg)); //要用10g以后的ojdbc14.jar
stmt.executeUpdate();
conn.commit();
stmt.close();
conn.close();
}
//读数据库的方法
static byte[] readdb() throws SQLException,IOException
{
// 使用Class对象的forName方法动态加载类
try
{
Class.forName ("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
conn = DriverManager.getConnection
("jdbc:oracle:thin:@127.0.0.1:1521:student", "hr", "hr");
// @machine:port:SID, userid, password
conn.setAutoCommit(false);
PreparedStatement stmt=conn.prepareStatement("select t1 from test where c1=?");
stmt.setString(1,"1");
ResultSet rset=stmt.executeQuery();
rset.next();
String ls=rset.getString("t1");
byte[] rslt=ls.getBytes();
rset.close();
stmt.close();
conn.close();
return rslt;
}
}
from http://hi.baidu.com/yangyee/blog/item/e8e086ed7e5a1b3cacafd5c9.html
发表评论
-
java 模拟微信浏览器http请求
2020-12-16 08:49 706public static void main(St ... -
java 小数点处理的问题
2015-08-22 16:23 740float num= (float)1/100 ... -
java操作excel 替换指定字符串
2014-12-26 10:27 5210根据excel模板里设置指定的num0,num1,num2 ... -
itext对水印图片的旋转、放大、缩小等操作的示例
2014-07-24 17:17 5719package test1; import java. ... -
java 获取ip
2014-04-25 16:38 823public static String getIpAddr ... -
读取poi
2014-03-12 17:57 1299/** * Writer: fuanyu * Dat ... -
对Map排序
2014-02-20 15:38 751本来来自:http://blog.sina.com.cn/s ... -
java 上下篇文章实现的思路
2014-02-14 15:03 751当前文章的ID =request("id" ... -
Java:String和Date、Timestamp之间的转换
2013-12-03 14:39 10171.1 String -> Date String ... -
ArrayList和数组间的相互转换
2012-07-31 16:00 1080package test.test1; import ... -
No result defined for action and result
2012-07-02 11:50 969当你在用struts2开发时,如果,从页面跳入action时, ... -
IntelliJ IDEA 10.0 使用javac 编译程序出现“非法字符: \65279 ”解决方法
2012-04-26 11:42 2141一、问题描述: 将在eclipse 创建的项目代码导入 I ... -
map取key及key的值
2012-03-19 15:53 1598public class Test2 { p ... -
java @override 报错处理
2012-02-02 14:14 1306有时候在自己电脑上编译通过的java代码,在别人那里确编译 ... -
Java判断字符串中是否包含汉字
2011-12-15 11:54 2251有两个方法 import java.util.regex.M ... -
JMagick+ImageMagic处理图片(高质量)
2011-11-27 13:37 2654项目需要简单处理一些用户上传的图片,如缩略图、剪切、旋转、水印 ... -
定时发送邮件的思路
2011-11-19 12:11 1262定时发送邮件:大概是用户选择在某个时间发送邮件; 步骤: ... -
java 解析json
2011-11-10 17:00 1094如下面代码 String str="[{'bus ... -
javamail 收邮件遇到的问题及解决方法
2011-11-04 16:29 22611.java.io.UnsupportedEncodingEx ... -
java 获取文件夹大小,文件大小,文件个数
2011-08-17 14:27 1690import java.io.File; import ja ...
相关推荐
JDBC方式操作CLOB字段实例代码 。
主要是整合了jdbc处理clob类型的增删改查方法,有需要的同学可以看下
oracle中使用jdbc读写clob字段,很多细节介绍,内容全面。
JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等...
JDBC读写Oracle的CLOB字段
JDBC中操作Blob、Clob等对象
简单写的一个小工具,把图片存入oracle中,按clob和blob两种方式存储,并读取图片
weblogic下转换oracle 的clob类型经常报转型错误,本例子通过反射解决weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB转型成oracle.sql.CLOB问题
主要介绍了详解jdbc实现对CLOB和BLOB数据类型的操作的相关资料,这里实现写入操作与读写操作,需要的朋友可以参考下
本篇文章是对jdbc处理Clob的使用进行了分析介绍,需要的朋友参考下
Mybatis 处理 CLOB、BLOB 类型数据
jdbc操作oracle数据库中的Clob类型
clob和blob在jdbc的应用~~~~~~
spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。
本篇是对使用jdbc,hibernate处理clob/blob字段进行了详细的分析介绍,需要的朋友参考下
通过jdbc读取oracle数据库的clob类型的字段转换为string类型
NULL 博文链接:https://53873039oycg.iteye.com/blog/2009996
数据库中clob类型转换的问题 数据库中clob类型转换的问题
下面是使用JDBC连接MySql的一个小的教程 1、查找驱动程序 MySQL目前提供的java驱动程序为Connection/J,可以从MySQL官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驱动程序为纯java驱动...
jdbc基础,包含基本概念、数据库连接操作、JDBC常用接口、与oracle/mysql/db2创建连接、Statement、PreparedStatement会话使用、Clob/Blob大文件处理、批处理操作等。