可以将二进制大对象 (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();
}
}
}