2012-07-03 21 views
2

在我的Android應用程序中,我需要臨時存儲一些表格中的數據,如下所示:如何用可變列數的表生成數據庫?

id |第1列|第2列| ... |列n

無論何時用戶按下按鈕,都會從服務器下載數據。但是,每次用戶從服務器下載數據表時,數據表都沒有固定數量的列(以及行)。例如,服務器可能會首次發送3列數據。那麼它可能會第二次發送5列的數據,等等......

鑑於這種情況,我認爲數據庫可能是正確的數據結構使用。我的計劃是創建一個數據庫,然後根據需要添加和刪除表。所以我一直在閱讀關於Android數據庫的各種教程(一個例子是這個http://www.codeproject.com/Articles/119293/Using-SQLite-Database-with-Android#)。在我看來,我不能使用sqlite數據庫創建具有可變數量列的新表。它是否正確?在onCreate(SQLiteDatabase數據庫)方法中,必須使用已知數量的列及其數據類型指定「create table」命令。我可以提供幾個「創建表」命令,每個命令都有不同的列數,但看起來很粗糙。有沒有辦法在運行中創建可變數量的列的數據庫表?

另一種替代方案可能使用多個散列表,每個散列表存儲一列數據表。如果數據庫方法不可行,我正認真考慮這種方法。歡迎任何更好的建議。

回答

4

在SQLite數據庫中沒有可變數量的列。另外,動態添加和刪除表格看起來像是一個可怕的黑客攻擊。

這聽起來像是你想存儲一個與id相關聯的值的數組。我建議你根據行而不是列來思考。使用表格結構,如(id,index,value);服務器返回的每個值數組都會生成儘可能多的行來存儲值。

+1

+1 Ted描述的db模型的類型被稱爲EAV:Entity Attribute Value - 參見Wikipedia獲得概述:http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2% 80%93value_model –

+0

這是您需要的答案,它與設計類型有關。 – northpole

+0

嗯...這可能工作,雖然編碼訪問表可能比我希望做的更復雜。與擁有多個散列表相比,您對這種方法有何看法? – ciklee