知识大全 jdbc方式读取oracle的clob字段实例

Posted 股票

篇首语:用行动祈祷比用言语更能够使上帝了解。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 jdbc方式读取oracle的clob字段实例相关的知识,希望对你有一定的参考价值。

          可能大家也都习惯了spring和hibernate对CLOB字段的处理 在spring中配置clob的oracle处理句柄 在hibernate中配置映射类型 然后就可以很轻松的以String 的形式处理大字段          今天我做了个需求 需要以jdbc的方式从mysql导一些备份数据到oracle正式库 就查了一些资料 最后写了个例子 首先 写个连接数据库的类 里面有返回mysq oracle连接的方法

  public Connection getConn(String flag)

  Connection con=null;

  try

  

  if(flag equals( ))

  

  Class forName( oracle jdbc driver OracleDriver );

  con = DriverManager getConnection( jdbc:oracle:thin:@IP: :数据库名字 name password );

  

  if(flag equals( ))

  

  Class forName( gjt mm mysql Driver );

  con = DriverManager getConnection( jdbc:mysql://localhost/数据库名?user=用户名&password=密码&useUnicode=true&characterEncoding=GBK );

  

  

  catch(Exception e)

  

  e printStackTrace();

  

  return con;

  

  public void setData()

  conn = new Conn();

  try

  String sqlfrom = select  p id ntent from <A title=table target=_blank>table</A> p  order by p id   ;

  String sqlinsert = insert into <A title=table target=_blank>table</A>   values(? ?) ;

  con = conn getConn( );

  stmt = con createStatement(); //从mysql取出大字段

  rs = stmt executeQuery(sqlfrom);

  con = conn getConn( );

  PreparedStatement pstmt = con prepareStatement(sqlinsert); //向oracle中插入大字段

  int i = ;

  while (rs next())

  pstmt setInt( rs getInt( ));

  pstmt setClob( <A title=oracle 股票&amp;amp;q=股票&amp;amp;sbb=搜索&amp;amp;sa=搜索&amp;amp;client=pub &amp;amp;forid= &amp;amp;prog=aff&amp;amp;ie=GB &amp;amp;oe=GB &amp;amp;hl=zh CN target=_blank>oracle</A> sql CLOB empty_lob());

  pstmt executeUpdate();  //插入时将大字段设为空

  this updateOne(con rs getInt( ) rs getString( ));  // 这里调用然后更新这个大字段

  

  rs close();  //关闭相关连接

  pstmt close();

  stmt close();

  con close();

   catch (Exception e)

  e printStackTrace();

  try

  

  con rollback();

   catch (Exception e )

  <A title=system target=_blank>system</A> out println( 回滚出现异常! );

  e printStackTrace();

  

  

      :该方法实现对应大字段记录的更新

  <PRE class=java name= code >public void updateOne(Connection con int id String content)

  String str = select ntent from <A title=table target=_blank>table</A>  t where t id= + id+   for update ;

  try

  // 注意 存取操作开始前 必须用setAutoCommit(false)取消自动提交 否则Oracle将抛出 读取违反顺序 的错误

  con setAutoCommit(false);

  stmt = con createStatement();

  ResultSet   rs_clob = stmt executeQuery(str);

  while ( rs_clob next())

  /* 取出clob数据*/

  <A title=oracle 股票&amp;amp;q=股票&amp;amp;sbb=搜索&amp;amp;sa=搜索&amp;amp;client=pub &amp;amp;forid= &amp;amp;prog=aff&amp;amp;ie=GB &amp;amp;oe=GB &amp;amp;hl=zh CN target=_blank>oracle</A> sql CLOB clob = (oracle sql CLOB)  rs_clob getClob( );

  /* 向clob中写入数据*/

  clob putString( content);

  

  stmt close();

  mit();

  con setAutoCommit(true);

  con close();

   catch (Exception e)

  e printStackTrace();

  try

  

  con rollback();

   catch (Exception e )

  <A title=system target=_blank>system</A> out println( 回滚出现异常! );

  e printStackTrace();

  

  

  

  </PRE>                        现在就完成了一行记录的更新

   读clob字段以String 的形式返回(当然也可以将读到的内容写入文件 大家改一下就可以了)

  <PRE class=java name= code >/**

  * 读clob字段

  * @param con

  * @param id

  * @return

  */

  public String  readClob(Connection con int id)

  

  String content= ;

  try

  

  con setAutoCommit(false);

  stmt=con createStatement();

  ResultSet rs_clob=stmt executeQuery( select  ntent  from  <A title=table target=_blank>table</A> t where t id= +id);

  <A title=oracle 股票&amp;amp;q=股票&amp;amp;sbb=搜索&amp;amp;sa=搜索&amp;amp;client=pub &amp;amp;forid= &amp;amp;prog=aff&amp;amp;ie=GB &amp;amp;oe=GB &amp;amp;hl=zh CN target=_blank>oracle</A> sql CLOB contents=null;

  while (rs_clob next())

        // 取出CLOB对象

  contents= (oracle sql CLOB) rs_clob getClob( );

  

  BufferedReader a = new BufferedReader(contents getCharacterStream());  //以字符流的方式读入BufferedReader

  String str = ;

  while ((str = a readLine()) != null)

  content = ncat(str);  //最后以String的形式得到

  

  mit();

  /*

  BufferedWriter out = new BufferedWriter(new FileWriter( e:/test txt ));

  out write(content);//写入文件

  out close();*/

  con setAutoCommit(true);

  con close();

  catch(Exception e)

  

  <A title=system target=_blank>system</A> out println( 出现异常 );

  e printStackTrace();

  try

  

  con rollback();

  

  catch (Exception e )

  

  <A title=system target=_blank>system</A> out println( 回滚出现异常! );

  e printStackTrace();

  

  

  return content;

  

  </PRE>

cha138/Article/program/Java/hx/201311/26226

相关参考

知识大全 用JSP处理Oracle中CLOB类型的字段

用JSP处理Oracle中CLOB类型的字段  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  CL

知识大全 如何对CLOB字段进行全文检索

如何对CLOB字段进行全文检索?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  系统环境  数据

知识大全 ORACLE大数据类型的操作之一CLOB

ORACLE大数据类型的操作之一CLOB  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  大家在应

知识大全 java语言操作Oracle数据库中的CLOB数据类型

java语言操作Oracle数据库中的CLOB数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 在sqlplus中操作blob和clob

Tom在他的《Expertoneononeoracle》给出了sqlplus中将文件load进BLOB或者CLOB字段的例子这里保存一份以备急用

知识大全 通过JDBC连接oracle数据库

通过JDBC连接oracle数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Java数据库连接

知识大全 通过JDBC连接oracle数据库的技巧

通过JDBC连接oracle数据库的技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java

知识大全 JDBC+Hibernate将Blob数据写入Oracle

JDBC+Hibernate将Blob数据写入Oracle  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 oracle删除重复记录方法

  删除重复记录方法实例  假设有一个员工表emp有字段emp_noDELETEFROMEMPE WHEREEROWID>(SELECTMIN(XROWID) FROMEMP

知识大全 JDBC存取ORACLE大型数据对象LOB几种情况的示范类

JDBC存取ORACLE大型数据对象LOB几种情况的示范类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一