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;
        }

 

}

相关内容