新聞中心
目錄:

創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元瑞麗做網(wǎng)站,已為上家服務(wù),為瑞麗各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
1、通用大字段jdbc存儲(chǔ)方法
2、oracle Clob存儲(chǔ)方法
3、oracle Blob存儲(chǔ)方法
內(nèi)容:
也不知道為什么,也許憑著自己是數(shù)據(jù)庫(kù)廠商老大的地位,只有oracle對(duì)大字段的處理不符合jdbc的標(biāo)準(zhǔn),因此才出現(xiàn)如下對(duì)oracle大字段特殊處理的方法,當(dāng)然hibernate或ibatis是自己封裝了如下的特殊處理。
1、通用大字段jdbc存儲(chǔ)方法
像常用的數(shù)據(jù)庫(kù),如DB2、mysql、sqlserver、sybase等都是支持標(biāo)準(zhǔn)的大字段處理,這樣才使得我們的程序能夠?qū)懙暮芰鲿澈芡ㄓ?,?dāng)然這也是標(biāo)準(zhǔn)存在的意義。接下來(lái)按照標(biāo)準(zhǔn)的方式師范一下使用方法。
首先,分別構(gòu)造兩個(gè)類,實(shí)現(xiàn)java.sql包下的Blob、Clob接口,完成接口提供的方法,并為其增加相應(yīng)的構(gòu)造函數(shù),如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;
- }
- ...
- }
然后,通過(guò)byte數(shù)組或String構(gòu)造Blob、Clob實(shí)例:
Java代碼
- Blob blob = new BlobImpl(data);
- Clob clob = new ClobImpl(data);
最后,通過(guò)PreparedStatement實(shí)例的setBlob方法將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。
Java代碼
- pst.setBlob(fieldIndex, new BlobImpl((byte[]) value));
- pst.setClob(fieldIndex, new ClobImpl(((String) value)));
2、oracle Clob存儲(chǔ)方法
oracle構(gòu)造Clob實(shí)例時(shí),需要持有Connection,然后利用oracle Clob類提供的靜態(tài)方法構(gòu)造出空的clob實(shí)例,最后將數(shù)據(jù)寫入該clob實(shí)例中,并通過(guò)上述方法存儲(chǔ)到數(shù)據(jù)庫(kù)中。構(gòu)造示例代碼如下:
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存儲(chǔ)方法
oracle構(gòu)造Blob實(shí)例時(shí),同樣需要持有Connection,然后利用oracle Blob類提供的靜態(tài)方法構(gòu)造出空的blob實(shí)例,最后將數(shù)據(jù)寫入該blob實(shí)例中,并通將其存儲(chǔ)到數(shù)據(jù)庫(kù)中。構(gòu)造示例代碼如下:
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;
- }
【編輯推薦】
- 幾個(gè)主流的Java連接池
- Java的JDBC數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)方法
- Tomcat5+MySQL JDBC連接池配置
- 基于JMX監(jiān)控下的JBoss數(shù)據(jù)庫(kù)連接池
- JBoss配置mysql數(shù)據(jù)庫(kù)連接池
當(dāng)前題目:Oracle大字段純jdbc存儲(chǔ)方法
當(dāng)前網(wǎng)址:http://www.dlmjj.cn/article/djoiocs.html


咨詢
建站咨詢
