本文给出一个用 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("保存失败"); } |
新闻热点
疑难解答