2009-08-22 134 views
2

我正在使用C#& MYSQL開發桌面應用程序。在DataGridView中將BLOB數據轉換爲簡單的字符串?

以我形式之一我有一個DataGridView(dgvBookings)和在我的數據庫表我有一個包含BLOB類型的字段specialization表tblBookings。

我用下面的查詢選擇數據,

SELECT * FROM tblBookings WHERE IsActive=1; 

,然後將數據與DataGridView的具有約束力,

dgvBookings.DataSource = ds.Tables["allbookings"]; 

但在GridView控件綁定數據後顯示的所有行Byte[] Array值列爲specialization,它是BLOB類型的。

如何解決這個問題,我希望以字符串格式顯示數據,無論寫在該列中,都應顯示在網格中。

回答

1

接收到CellFormatting事件並將字節數組轉換爲String,或將BLOB強制轉換爲SQL查詢中的字符類型。

+0

我有'CAST(特化的CAR)... – Prashant 2009-08-23 05:05:37

4

你必須使用DataSet之前的字節數組字符串轉換:


DataTable allBookings = ds.Tables["allbookings"]; 
DataColumn column = allBookings.Columns.Add("NotABlobAnyMore", typeof(string)); 

foreach (DataRow row in allBookings.Rows) { 
    row[column] = Encoding.Unicode.GetString((byte[])row["specialization"]); 
} 

dgvBookings.DataSource = allBookings ; 

在我使用Unicode的樣品,但你應該使用什麼編碼用於生成字節數組(BLOB)。

如果您打算允許更新新列,則必須在將數據發回數據庫之前將字符串轉換回字節數組(在舊列中)。

1

那麼,BLOB的固有問題是它...不是文本。它是二進制的。它可能是一個圖像(jpg等),一個EXE,或者它可能是文本...但在哪些編碼? UTF8?不簡單。如果它是一個CLOB,我希望它可以正常工作 - 但除此之外,我會完全預料到你必須手動解析BLOB,否則它將如何解釋?

對於任意 BLOB,我能想到的最接近的就是顯示類似hex的東西......但是與DataTable即使這也是一個挑戰。你可以通過TypeConverter類做...`在MySQL查詢和我現在工作的罰款

相關問題