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