2012-07-02 75 views
0

我的應用程序允許用戶將數據保存到sqlite文件。爲了確保唯一的表名,我想在用戶按下「保存」時創建一個名稱爲(日期/時間)格式的表格。有沒有一種方法來加載我的sqlite文件中的所有表,而不明確指出所有表的名稱?有沒有辦法在不知道表名的情況下加載sqlite表?

我的食物在sqlite的文件列表。 sqlite文件包含一堆有關其中每個食品的信息。用戶可以通過瀏覽sqlite文件並將項目添加到列表中來創建自己的配方。列表中的每個項目都由tableview中的單元格表示。配方完成後,我希望用戶能夠保存它,並讓系統自動將此配方添加爲不同表格視圖中的單元格。這樣,當有人選擇該小區,整個配方在接下來的實現代碼如下

+1

這聽起來像一個壞的數據保存設計。你有沒有考慮讓每一行都有一個'saveType'變量? –

+0

'saveType'變量註釋是什麼意思? –

+2

聽起來像您以錯誤的方式思考您的數據集。如果你可以描述你想要在sql中跟蹤的內容,我們可以更好地幫助你設置你的表格,這對你來說會更容易。 – JoeCortopassi

回答

2

你正確使用SQLite數據庫,我不認爲顯示(不只是配方爲單元標題的名稱)。

這聽起來像你正在使用每用戶數據項的表格。

數據庫的強大之處在於將多個用戶,多個項目或多個數據的數據存儲到幾個表格中,然後稍後爲特定用戶或項目檢索數據。表應該添加,更新或刪除行,但一般來說,表不應作爲單獨的數據元素創建和銷燬。

我懷疑你不瞭解的是連接的概念。

一種你描述可能是這個樣子什麼設計:

User 
--------------- 
ID 
First_Name 
Last_Name 
Email_Address 

Ingredient 
--------------- 
ID 
Name 
Description 

Recipe 
--------------- 
ID 
User_ID 
Name 
Description 
Serving_size 
Ingredients_ID 
Date_Created 

Recipe_Ingredients 
--------------------- 
ID 
Ingredient_ID 
Quantity 
Unit_of_measure 

So to get to get a list of recipes for John Doe (this query assumes you can only have one John Doe), you'd do: 

select * from Recipe r 
where r.User_ID = (select ID from User where First_Name = 'John' and Last_Name='Doe') 

或獲得配方與成份列表:

select * from Recipe r 
    join Recipe_Ingredients ri on r.Ingredients_ID = ri.ID 
    join Ingredient i on ri.Ingredient_ID = i.ID 
    where r.User_ID = (select ID from User where First_Name = 'John' and Last_Name='Doe') 

使用這樣的設計,當用戶添加一個新的配方,你只需添加行到食譜和recipe_ingredients表。或者,當他們添加新配料時,您可以在配料表中添加一行。

這裏有一個SQL joins tutorial的鏈接。

相關問題