C#对Oracle BLOB字段的写入读取方法

1.写入BLOB:
   string file_name = "D:\\20080523.jpg";
   
string conn_str = "Provider=OraOLEDB.Oracle.1;Password=agoodjob;Persist Security Info=True;User ID=ams;Data Source=ims;Extended Properties=";//Provider必須用OraOLEDB.Oracle.1
   OleDbConnection cn = new OleDbConnection(conn_str);
   cn.Open();

   OleDbCommand cmd 
= new OleDbCommand("UPDATE BLOB SET PHOTO = ? ",cn);
   cmd.Parameters.Add(
"PHOTO",OleDbType.Binary);   
   
   FileStream fs 
= new FileStream(file_name, FileMode.OpenOrCreate, FileAccess.Read);
   
byte[] MyData= new byte[fs.Length];
   fs.Read(MyData, 
0, System.Convert.ToInt32(fs.Length));
   fs.Close();

   cmd.Parameters[
"PHOTO"].Value = MyData;
   
try 
   {
    
int result = cmd.ExecuteNonQuery();
    
if(result<1)
    {
     OleDbCommand cmd1 
= new OleDbCommand(" INSERT INTO BLOB (PHOTO) VALUES ( ? )",cn);
     cmd1.Parameters.Add(
"PHOTO",OleDbType.Binary);
     cmd1.Parameters[
"PHOTO"].Value = MyData;
     result 
= cmd1.ExecuteNonQuery();
    }
   }  
   
catch(Exception e1)
   {
    Page.RegisterStartupScript(
"","<script language='javascript'>alert('"+e1.Message+"')</script>");
   }
   
finally
   {
    cn.Close();
   }

2.读取BLOB:
   string conn_str = "Provider=OraOLEDB.Oracle.1;Password=agoodjob;Persist Security Info=True;User ID=ams;Data Source=ims;Extended Properties=";//Provider必須用OraOLEDB.Oracle.1
   
   OleDbDataAdapter da 
= new OleDbDataAdapter();
   DataSet ds 
= new DataSet();
   OleDbConnection conn 
= new OleDbConnection(conn_str);
   OleDbCommand cmd 
= new OleDbCommand("SELECT PHOTO FROM WEB_DB.USERS WHERE USER_ID = 1", conn);
   da.SelectCommand 
= cmd;
   cmd.Connection.Open();
   da.Fill(ds);

   
byte[] img = new byte[0];
   DataRow dr;
   dr 
= ds.Tables[0].Rows[0];

   
if (!ds.Tables[0].Rows[0]["PHOTO"].ToString().Equals(""))
   {
    img 
=  (byte[])dr["PHOTO"];
   }

   Response.ContentType
= "image/*";
   Response.BinaryWrite (img);

   conn.Close();
posted @ 2007-05-23 15:07  tohen  阅读(5891)  评论(0编辑  收藏  举报