調用 getBlob 讀取 BLOB 欄位至 RichTextBox
string sql = "SELECT content FROM dp WHERE id = " + ID; // content 為 BLOB 欄位
MemoryStream ms = DBClass.GetBlob(sql);
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 將 RichTextBox 內容寫入 BLOB 欄位
string sql = "UPDATE dp SET content = :BLOB WHERE id = " + ID;
MemoryStream ms = new MemoryStream();
richTextBox.SaveFile(ms, RichTextBoxStreamType.RichText);
if (!DBClass.SetBlob(sql, ms))
MessageBox.Show("儲存失敗");
關鍵點說明
MemoryStream 作為中介緩衝區,避免暫存檔
RichTextBoxStreamType.RichText 保留格式 (RTF);失敗時回退 PlainText
ms.Position = 0 讀取前必須歸零,否則從尾端讀取得到空資料
- 參數化查詢
:BLOB 寫法視具體資料庫提供者而定 (OleDb 用 ?、SqlClient 用 @param)