.net中二进制大对象的操作

王朝c#·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

public static void WriteLob(string table_name,string table_id,int id,int column,string content)

{

OracleConnection myCn = new OracleConnection(strConn);

OracleCommand myCmd = new OracleCommand();

try

{

myCn.Open();

}

catch(System.Data.OracleClient.OracleException e)

{

throw new Exception(e.Message);

}

OracleTransaction myTrans = myCn.BeginTransaction();

try

{

myCmd.Connection = myCn;

myCmd.Transaction = myTrans;

myCmd.CommandText = "SELECT * FROM "+ table_name +" where "+ table_id +" = "+ id +" FOR UPDATE";

OracleDataReader reader = myCmd.ExecuteReader();

using(reader)

{

reader.Read();

OracleLob CLOB = reader.GetOracleLob(column);//column为lob类型所在列

Encoding UTF8 = Encoding.UTF8;//使用UTF-8进行编码

byte[] buffer= UTF8.GetBytes(content);

if(buffer.Length % 2 ==0)

CLOB.Write(buffer, 0, buffer.Length); //这里的参数必须为偶数

else

CLOB.Write(buffer, 0, (buffer.Length - 1));

//CLOB.Position= 0;

myTrans.Commit();

}

}

catch(System.Data.OracleClient.OracleException e)

{

myTrans.Rollback();

throw new Exception(e.Message);

}

finally

{

myCmd.Dispose();

myCn.Close();

}

}

public static string ReadLob(string table_name,string table_id,int id,int column)

{

OracleConnection myCn = new OracleConnection(strConn);

OracleCommand myCmd = new OracleCommand();

try

{

myCn.Open();

}

catch(System.Data.OracleClient.OracleException e)

{

throw new Exception(e.Message);

}

OracleTransaction myTrans = myCn.BeginTransaction();

try

{

myCmd.Connection = myCn;

myCmd.Transaction = myTrans;

myCmd.CommandText = "SELECT * FROM "+ table_name +" where "+ table_id +" = "+ id +" FOR UPDATE";

OracleDataReader reader = myCmd.ExecuteReader();

using(reader)

{

reader.Read();

OracleLob CLOB = reader.GetOracleLob(column);

int[] content = new int[(int)CLOB.Length];

byte[] buffer = new byte[(int)CLOB.Length];

for(int i = 0;i<(int)CLOB.Length;i++)

{

content = CLOB.ReadByte();

buffer= (byte)content;

}

Encoding utf8 = Encoding.UTF8;

string final = utf8.GetString(buffer);

myTrans.Commit();

return final;

}

}

catch(System.Data.OracleClient.OracleException e)

{

myTrans.Rollback();

throw new Exception(e.Message);

}

finally

{

myCmd.Dispose();

myCn.Close();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航