本文給出一個(gè)用 C# 編程實(shí)現(xiàn)讀寫B(tài)inary文件的方法,下面就是相關(guān)源代碼:
| 以下是引用片段: //返回blob數(shù)據(jù) 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()) //循環(huán)到下一條記錄 ...{ 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(); } } //設(shè)置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("錯(cuò)誤:因" + ex.Message + ",無法執(zhí)行:" + SQL); return false; } finally ...{ this.close(); } } |
調(diào)用 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(); } |
調(diào)用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("保存失敗"); } |
新聞熱點(diǎn)
疑難解答