• C# 编程实现读写 Binary

    • 关键字:

      C#读写文件,IO,Binary

      来源:北大青鸟成都金晨 发布时间:2008-12-24 0:00:00
      本文给出一个用 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("保存失败");
        }