本文给出一个用 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("保存失败"); } |
>> 本文固定链接: http://www.vcgood.com/archives/3678