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

数据库表结构:
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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值