用C#编程实现读写Binary

来源:网络时间:2011-06-22 14:02:02

  本文给出一个用 C# 编程实现读写 Binary 的实例代码

  以下是引用片段:

  //返回blob数据

  public MemoryStream getBlob(string SQL)

  ...{

  try

  ...{

  Db_Conn();

  cmd = new OleDbCommand(SQL, Conn);

  cmd.CommandType = CommandType.Text;//是sql

  OleDbDataReader Rs = cmd.ExecuteReader();

  if (Rs.Read()) //循环到下一条记录

  ...{

  if (!(Rs.GetValue(0) is System.DBNull))

  ...{

  byte[] image_bytes = (byte[])Rs.GetValue(0);

  MemoryStream ms = new MemoryStream(image_bytes);

  return ms;

  }

  else

  return null;

  }

  else

  return null;

  }

  finally

  ...{

  this.close();

  }

  }

  //设置blob

  public bool SetBlob(string SQL, MemoryStream Ms)

  ...{

  try

  ...{

  Db_Conn();

  cmd = new OleDbCommand(SQL, Conn);

  cmd.CommandType = CommandType.Text;//是sql

  int n=Convert.ToInt32(Ms.Length.ToString());

  Ms.Position = 0;

  byte[] pReadByte = new Byte[n];

  Ms.Read(pReadByte, 0, n);

  cmd.Parameters.Add("BLOB", OleDbType.Binary).Value = pReadByte;

  cmd.ExecuteNonQuery();

  return true;

  }

  catch (Exception ex)

  ...{

  MessageBox.Show("错误:因" + ex.Message + ",无法执行:" + SQL);

  return false;

  }

  finally

  ...{

  this.close();

  }

  }

  

  调用 getBlob

  以下是引用片段:

  String sqlStr = "select content from dp where id=" + ID;//content为dp中的BLOB字段,ID为主键

  MemoryStream ms = DBClass.getBlob(sqlStr);

  if (ms == null)

  richTextBox.Clear();

  else

  ...{

  if (ms.Length > 0)

  ...{

  ms.Position = 0;

  try

  ...{

  richTextBox.LoadFile(ms, RichTextBoxStreamType.RichText);

  }catch...{

  richTextBox.LoadFile(ms, RichTextBoxStreamType.PlainText);

  }

  }else

  richTextBox.Clear();

  }

  

  调用setBlob

  以下是引用片段:

  String sqlStr = "update dp set content=:BLOB where id=" + ID;

  MemoryStream ms = new MemoryStream();

  richTextBox.SaveFile(ms, RichTextBoxStreamType.RichText);

  if (!DBClass.SetBlob(sqlStr, ms))

  ...{

  MessageBox.Show("保存失败");

  }

文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站) 联系邮箱:rjfawu@163.com