java oracle xml_Java 写xml到 Oracle xmlType

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.Reader;

import java.io.Writer;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import Oracle.sql.BLOB;

import oracle.sql.CLOB;

public class TestXMLType {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Connection conn = null;

try

{

//need input the name of manager

//add the picture's path

String strName = "test";

String strPhoto = "C:/test.xml";

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

String str="jdbc:oracle:thin:@127.0.0.1:1521:orcl";

conn = DriverManager.getConnection(str,"scott","tigger");

InputStream ins = null;

StringBuffer buffer = new StringBuffer();

ins = new FileInputStream(new File("C:/test.xml"));

byte[] tmp = new byte[10];

int length = 0;

while((length = ins.read(tmp)) != -1)

{

buffer.append(new String(tmp,0,length));

}

ins.close();

insertXML(buffer.toString(),conn);

}

catch(Exception ex)

{

ex.printStackTrace();

}

finally

{

if(conn != null)

{

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

private static void insertXML(String xmlData, Connection conn) {

CLOB clob = null;

String query;

// Initialize statement Object

PreparedStatement pstmt = null;

try{

query = "INSERT INTO zxx_xml VALUES (?,XMLType(?)) ";

// Get the statement Object

pstmt = conn.prepareStatement(query);

// xmlData is the string that contains the XML Data.

// Get the CLOB object using the getCLOB method.

clob = getCLOB(xmlData, conn);

// Bind this CLOB with the prepared Statement

pstmt.setString(1, "F000002LNW");

pstmt.setObject(2, clob);

// Execute the Prepared Statement

if (pstmt.executeUpdate () == 1) {

System.out.println ("Successfully inserted a Purchase Order");

}

} catch(SQLException sqlexp){

sqlexp.printStackTrace();

} catch(Exception exp){

exp.printStackTrace();

}

}

private static CLOB getCLOB(String xmlData, Connection conn) throws SQLException{

CLOB tempClob = null;

try{

// If the temporary CLOB has not yet been created, create one

tempClob = CLOB.createTemporary(conn, true, CLOB.DURATION_SESSION);

// Open the temporary CLOB in readwrite mode, to enable writing

tempClob.open(CLOB.MODE_READWRITE);

// Get the output stream to write

Writer tempClobWriter = tempClob.getCharacterOutputStream();

// Write the data into the temporary CLOB

tempClobWriter.write(xmlData);

// Flush and close the stream

tempClobWriter.flush();

tempClobWriter.close();

// Close the temporary CLOB

tempClob.close();

} catch(SQLException sqlexp){

tempClob.freeTemporary();

sqlexp.printStackTrace();

} catch(Exception exp){

tempClob.freeTemporary();

exp.printStackTrace();

}

return tempClob;

}

}0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值