C#编程实例-读写Binary

关于Binary方式

Binary和文本方式的区别,主要是在一些特殊字符的处理。
由于在不同的系统中,文本中用于显示格式的控制符编码是不同的。比如windows 的文本回车是0x13 0x10两个字符,而unix是0x10。如果是以文本方式打开,就会做一些转换。这样就不能保证从文件中读取到的内容和原来的完全一致,但能保证输出文本是显示的正确。而以Binary方式打开,内容完全一致,但在不同系统上输出可能不一样。
如果你读取的内容需要由系统显示,***用文本方式(由于很多C/C++编译器的输出函数能适用多种格式,所以用Binary方式通常也不会有问题)。如果要保证读取的和文件一致,就一定要用Binary方式。

C#编程实例-读写Binary,对于初学者来说是个不错的参考性文章。

 
 
 
  1. public MemoryStream getBlob(string SQL)   
  2. ...{   
  3. try   
  4. ...{   
  5. Db_Conn();   
  6. cmd = new OleDbCommand(SQL, Conn);   
  7. cmd.CommandType = CommandType.Text;//是sql   
  8. OleDbDataReader Rs = cmd.ExecuteReader();   
  9. if (Rs.Read()) //循环到下一条记录   
  10. ...{   
  11. if (!(Rs.GetValue(0) is System.DBNull))   
  12. ...{   
  13. byte[] image_bytes = (byte[])Rs.GetValue(0);   
  14. MemoryStream ms = new MemoryStream(image_bytes);   
  15. return ms;   
  16. }   
  17. else   
  18. return null;   
  19. }   
  20. else   
  21. return null;   
  22. }   
  23. finally   
  24. ...{   
  25. this.close();   
  26. }   
  27. }   
  28. //设置blob   
  29. public bool SetBlob(string SQL, MemoryStream Ms)   
  30. ...{   
  31. try   
  32. ...{   
  33. Db_Conn();   
  34. cmd = new OleDbCommand(SQL, Conn);   
  35. cmd.CommandType = CommandType.Text;//是sql   
  36. int n=Convert.ToInt32(Ms.Length.ToString());   
  37. Ms.Position = 0;   
  38. byte[] pReadByte = new Byte[n];   
  39. Ms.Read(pReadByte, 0, n);   
  40. cmd.Parameters.Add("BLOB", OleDbType.Binary).Value = pReadByte;   
  41. cmd.ExecuteNonQuery();   
  42. return true;   
  43. }   
  44. catch (Exception ex)   
  45. ...{   
  46. MessageBox.Show("错误:因" + ex.Message + ",无法执行:" + SQL);   
  47. return false;   
  48. }   
  49. finally   
  50. ...{   
  51. this.close();   
  52. }   

C#编程实例-读写Binary 调用getBlob代码

 
 
 
  1. String sqlStr = "select content from dp where id=" + ID;  
  2. //content为dp中的BLOB字段,ID为主键   
  3. MemoryStream ms = DBClass.getBlob(sqlStr);   
  4. if (ms == null)   
  5. richTextBox.Clear();   
  6. else   
  7. ...{   
  8. if (ms.Length > 0)   
  9. ...{   
  10. ms.Position = 0;   
  11. try   
  12. ...{   
  13. richTextBox.LoadFile(ms, RichTextBoxStreamType.RichText);   
  14. }catch...{   
  15. richTextBox.LoadFile(ms, RichTextBoxStreamType.PlainText);   
  16. }   
  17. }else   
  18. richTextBox.Clear();   

C#编程实例-读写Binary 调用setBlob代码

 
 
 
  1. String sqlStr = "update dp set content=:BLOB where id=" + ID;   
  2. MemoryStream ms = new MemoryStream();   
  3. richTextBox.SaveFile(ms, RichTextBoxStreamType.RichText);   
  4. if (!DBClass.SetBlob(sqlStr, ms))   
  5. ...{   
  6. MessageBox.Show("保存失败");   

网页标题:C#编程实例-读写Binary
文章链接:http://www.mswzjz.cn/qtweb/news26/373576.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能