Java 写xml到 Oracle xmlType(一)

2014-11-24 18:11:29 · 作者: · 浏览: 2

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;


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