本文给出一个用 C# 编程实现读写Binary文件的方法,下面就是相关源代码:
以下是引用片段: //返回blob数据 publicMemoryStreamgetBlob(stringSQL) ...{ try ...{ Db_Conn(); cmd=newOleDbCommand(SQL,Conn); cmd.CommandType=CommandType.Text;//是sql OleDbDataReaderRs=cmd.ExecuteReader(); if(Rs.Read())//循环到下一条记录 ...{ if(!(Rs.GetValue(0)isSystem.DBNull)) ...{ byte[]image_bytes=(byte[])Rs.GetValue(0); MemoryStreamms=newMemoryStream(image_bytes); returnms; } else returnnull; } else returnnull; } finally ...{ this.close(); } } //设置blob publicboolSetBlob(stringSQL,MemoryStreamMs) ...{ try ...{ Db_Conn(); cmd=newOleDbCommand(SQL,Conn); cmd.CommandType=CommandType.Text;//是sql intn=Convert.ToInt32(Ms.Length.ToString()); Ms.Position=0; byte[]pReadByte=newByte[n]; Ms.Read(pReadByte,0,n); cmd.Parameters.Add("BLOB",OleDbType.Binary).Value=pReadByte; cmd.ExecuteNonQuery(); returntrue; } catch(Exceptionex) ...{ MessageBox.Show("错误:因"+ex.Message+",无法执行:"+SQL); returnfalse; } finally ...{ this.close(); } }
调用 getBlob
以下是引用片段: StringsqlStr="selectcontentfromdpwhereid="+ID;//content为dp中的BLOB字段,ID为主键 MemoryStreamms=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
以下是引用片段: StringsqlStr="updatedpsetcontent=:BLOBwhereid="+ID; MemoryStreamms=newMemoryStream(); richTextBox.SaveFile(ms,RichTextBoxStreamType.RichText); if(!DBClass.SetBlob(sqlStr,ms)) ...{ MessageBox.Show("保存失败"); }
本文源自:翔宇亭——IT乐园(http://),转载请保留此信息!