-- 作者:卷积内核
-- 发布时间:7/9/2009 3:10:00 PM
-- 用 C# 编程实现读写Binary
本文给出一个用 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("保存失败"); }
|