CSharp读写SQL Server数据库中的Image列

类别:.NET开发 点击:0 评论:0 推荐:

数据库表结构:

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'Content' AND type = 'U')
 DROP TABLE Content
GO

create table Content
(
 --内容ID
 Id bigint IDENTITY(1,1) NOT NULL,
 --内容
 data image default null,
  CONSTRAINT PK_ContentId PRIMARY KEY CLUSTERED (Id)
)

GO

const String cnnstr = "Provider=SQLOLEDB.1;User ID=sa;Password=;Initial Catalog=MyDb;Data Source=(local)";

写入

public bool WriteContent(byte [] data)
  {   
   OleDbConnection conn = new OleDbConnection(cnnstr);
   String mySelectQuery = "insert into Content(data)values(?)";
   OleDbCommand myCommand = new OleDbCommand(mySelectQuery, conn);
   myCommand.CommandTimeout = 60;
   
   
   OleDbParameter param = new OleDbParameter("@data", OleDbType.VarBinary, data.Length);    
   param.Direction = ParameterDirection.Input;
   param.Value = data;
   
   myCommand.Parameters.Add(param);
   bool ret = false;

   try
   { 
    conn.Open();
    myCommand.ExecuteNonQuery();
    ret = true;
   }
   catch(Exception e)
   {
    String msg = e.Message;
   }
   finally
   {
    //关闭数据库连接
    if((conn != null) && (conn.State != ConnectionState.Closed))
    {
     conn.Close();
    } 
   }
   return ret;
  }

读出

private byte [] ReadContent(Int64 contentId)
  {
   byte [] buff = null;
   OleDbConnection conn = new OleDbConnection(cnnstr );
   String queryStr = String.Format("select data from Content where Id={0}", contentId);
  OleDbCommand myCommand = new OleDbCommand(queryStr, conn);
   myCommand.CommandTimeout = 60;
   OleDbDataReader reader = null;
   long dataLen = 0L;
   try
   { 
    conn.Open();
    reader = myCommand.ExecuteReader();
    if( reader.Read() )
    {
     //得到要读的数据长度,注意buff必须是空的引用
     dataLen = reader.GetBytes(0, 0, buff, 0, 1);
     //分配缓冲区
     buff = new byte[dataLen];
     //读数据
     dataLen = reader.GetBytes(0, 0, buff, 0, (int)dataLen);
    }    
   }
   catch(Exception e)
   {
    internalError(e);
    String msg = e.Message;
   }
   finally
   {
    //关闭数据集
    if(reader != null && !reader.IsClosed)
     reader.Close();
    //关闭数据库连接
    if((conn != null) && (conn.State != ConnectionState.Closed))
    {
     conn.Close();
    } 
   }
   return buff;
  }

本文地址:http://com.8s8s.com/it/it44219.htm