2013-08-03 50 views
1

我有一個datagridview和一個SQLite數據庫。數據網格可以有任意數量的行和任意數量的列。在數據庫中保存datagridview的最佳方法

我需要將此數據網格保存到SQLite數據庫,以便能夠在第二個時刻以完全相同的方式重新填充它。我知道如何創建表格,填充表格等,所以這不是一個如何去做的問題。我需要知道的是最好的方式是做什麼。它必須是快速和可靠的,並且必須能夠更新。

任何消化?

謝謝

回答

3

這取決於你如何填充你的DataGridView。

  1. 如果使用數據源和對象列表,則可以將特性存儲在數據庫中。大寫字母「ANY」尋找我,這不是你的解決方案,但我補充說它是完整的。
  2. 如果您直接填充網格(items.add),則可以將值存儲爲數據庫中的名稱/值對
  3. 如果填充網格直接和不喜歡(2),則可以在您的數據庫對應於你的datagrid視圖。

建議-1-

你綁定你的 「汽車作爲(的車)名單」 到DataGridView。現在你可以通過與反射物體運行,即使有這樣的創建表(未測試的代碼,database.executeQuery()僅僅是爲您的數據庫執行功能的佔位符):

建議-2-

將名稱 - 值對存儲在數據庫中。如果你的網格是「小」(100000 < row * colums),這就足夠快並且具有很大的靈活性,而不必改變數據庫結構。

For Each row as DataGridViewRow in MyDataGridView.Rows 
    For Each col as DataGridViewColumn in MyDataGridView.Columns 
     database.executeQuery("INSERT INFO dgvContent(RowId, Name, Value) VALUES (" & row.Index & ", '" & col.Name & "', '" & row.Cells(col).Value & "' ") 
    Next For 
Next For 

要檢索和更新數據,您可以使用RowId將一行的值重新組合在一起。

建議-3-

這是建議2和1。您在數據庫中創建DataGridView列,並有準確的DataGridView數據庫中的相同方式的組合。這比建議-1-更靈活,因爲你不能隨時更改對象的屬性,但是由於必須創建,刪除和組織表結構,所以更多的麻煩於Suggestion -2-。真正的統計分析可能帶有建議-3-,但由於表格結構不是靜態的,所以很難實現。 (無編號爲這個例子,只是結合建議2碼與建議1碼)

結論

我覺得這是拯救與任何行和任何列一個DataGridView沒有最好的方式。這完全取決於情況。有時我會使用Suggestion -2-,因爲它是代碼,數據庫結構是靜態的。有時我會使用Suggestion-3,因爲它可以處理更多的數據,並且對它進行查詢感覺更自然。但是這裏的數據庫結構變化很大。這些變化需要時間

而且道路

上。在一個大一點的應用,我從來沒有直接從DataGridView中對數據庫填充數據。我總是在它們之間使用一個抽象層(模型層,如ORM)。我認爲這具有以下優點: 1.您可以更靈活地使用您的數據庫例程,而不僅僅是這一個DataGridView。 (我真的很遺憾代碼重複以任何方式) 2.您可以更容易地進行更改:如果DataGridView更改,您不必考慮數據庫,只有輕量級抽象層。如果你的數據庫發生了變化,你不需要強硬的看法。 3.數據邏輯不是視圖的一部分,數據邏輯進入模型層。

+1

非常好的答案!大!謝謝! :) – sharkyenergy

相關問題