1. 程式人生 > >設定oracle中的blob欄位,將xml檔案寫入到資料庫中

設定oracle中的blob欄位,將xml檔案寫入到資料庫中

http://hi.baidu.com/net1979/blog/item/1829e14ee7d26c0db2de0569.html

可以將二進位制大物件 (BLOB) 作為二進位制或字元資料寫入資料庫,具體視資料來源的欄位型別而定。若要將 BLOB 值寫入資料庫,請發出相應的 INSERT 或 UPDATE 語句並將 BLOB 值作為輸入引數傳遞如果 BLOB 儲存為文字格式(如 SQL Server text 欄位),則可將 BLOB 作為字串引數傳遞。如果 BLOB 儲存為二進位制格式(如 SQL Server image 欄位),則可將型別 byte 的陣列作為二進位制引數傳遞。

注意

BLOB 可能相當大,因此在作為單個值寫入時可能要使用大量的系統記憶體,從而降低應用程式的效能。若要減少寫入 BLOB 值時所使用的記憶體量,可以按“塊”將 BLOB 寫入資料庫。我這裡只是把xml檔案一次性存進資料庫,沒有分塊,因為我用的xml檔案不是很大。

/// <summary>
    /// 設定BLOB
    /// </summary>
    /// <param name="inst_id">例項編號</param>
    /// <param name="xmlFrom">xml檔案</param>
    private void setBlob(string inst_id,XmlDocument xmlFrom)
    {  
        //將xmld存入流程例項表       
        OracleConnection con = GenericClassOra.connect();   //連線資料庫,自已寫的方法       
        //頁面要設定成gb2312: ResponseEncoding="gb2312",根據情況,如果你的是utf-8
        byte[] ddd = System.Text.Encoding.Default.GetBytes(xmlFrom.InnerXml);        
      //這是要更新哪一條的SQL語句
        string strSQL = "update 表名set blob欄位名=:ddd where id='" + inst_id + "'";
        try
        {
            con.Open();
            OracleCommand comd = new OracleCommand(strSQL, con);

            comd.CommandType = CommandType.Text;
            comd.CommandText = strSQL;
            comd.Parameters.Add("ddd", System.Data.OracleClient.OracleType.Blob).Value = ddd;
            comd.ExecuteNonQuery();
        }
        catch(Exception ex)
        {            
            throw ex;
        }
        finally
        {
            if (con.State == ConnectionState.Open)
            {
                con.Close();
            }
        }
       
    }