首页 > PHP资讯 > JAVA培训 > Oracle大字段纯jdbc存储方法

Oracle大字段纯jdbc存储方法

JAVA培训

 

目录:

1、通用大字段jdbc存储方法

2、oracle Clob存储方法

3、oracle Blob存储方法

内容:

也不知道为什么,也许凭着自己是数据库厂商老大的地位,只有oracle对大字段的处理不符合jdbc的标准,因此才出现如下对oracle大字段特殊处理的方法,当然hibernate或ibatis是自己封装了如下的特殊处理。

1、通用大字段jdbc存储方法

像常用的数据库,如DB2、mysql、sqlserver、sybase等都是支持标准的大字段处理,这样才使得我们的程序能够写的很流畅很通用,当然这也是标准存在的意义。接下来按照标准的方式师范一下使用方法。

首先,分别构造两个类,实现java.sql包下的Blob、Clob接口,完成接口提供的方法,并为其增加相应的构造函数,如BlobImpl:

Java代码



public class BlobImpl implements Blob {     
    
    private byte[] binaryData = null;     
    
    public BlobImpl(byte[] data) {     
        setBinaryData(data);     
    }     
    
...     
} 

如ClobImpl:

Java代码



public class ClobImpl implements Clob {     
         
    public ClobImpl(String data){     
        this.charData = data;     
    }     
    
...     
}  

然后,通过byte数组或String构造Blob、Clob实例:

Java代码



public class ClobImpl implements Clob {     
         
    public ClobImpl(String data){     
        this.charData = data;     
    }     
    
...     
}  

 
  1. Blob blob = new BlobImpl(data);     
  2.     
  3. Clob clob = new ClobImpl(data);  

最后,通过PreparedStatement实例的setBlob方法将数据存储到数据库中。

Java代码



pst.setBlob(fieldIndex, new BlobImpl((byte[]) value));  

pst.setClob(fieldIndex, new ClobImpl(((String) value)));  

2、oracle Clob存储方法

oracle构造Clob实例时,需要持有Connection,然后利用oracle Clob类提供的静态方法构造出空的clob实例,最后将数据写入该clob实例中,并通过上述方法存储到数据库中。构造示例代码如下:

Java代码

 


public CLOB getCLOB(Connection conn, String data) throws Exception {     
    CLOB clob = null;     
    Writer writer = null;     
    try {     
        clob = CLOB.createTemporary(conn, false,   CLOB.DURATION_SESSION);     
        writer = clob.getCharacterOutputStream();     
        writer.write((data).toCharArray());     
        writer.flush();     
    } catch (Exception e) {     
        throw e;     
    } finally {     
        if (writer != null) {     
    try {     
         writer.close();     
              } catch (IOException e) {     
                   Logger.log(Logger.WARNING, e.getMessage(), e);     
                   e.printStackTrace();     
              }     
        }     
     }     
     return clob;     
}    

3、oracle Blob存储方法

oracle构造Blob实例时,同样需要持有Connection,然后利用oracle Blob类提供的静态方法构造出空的blob实例,最后将数据写入该blob实例中,并通将其存储到数据库中。构造示例代码如下:

Java代码



public BLOB getBLOB(Connection conn, byte[] data) throws Exception {     
    BLOB blob = null;     
    OutputStream output = null;     
    try {     
        blob = BLOB.createTemporary(conn, false, BLOB.DURATION_SESSION);     
        output = blob.getBinaryOutputStream();     
        output.write(data, 0, data.length);     
    } catch (Exception e) {     
        throw e;     
    } finally {     
        if (output != null) {     
    try {     
        output.close();     
    } catch (IOException e) {     
                  Logger.log(Logger.WARNING, e.getMessage(), e);     
        e.printStackTrace();     
    }     
         }     
    }     
    return blob;     
}    

常州java培训) 

本文由欣才IT学院整理发布,未经许可,禁止转载。