我的应用程序允许用户将数据保存到sqlite文件。为了确保唯一的表名,我想在用户按下“保存”时创建一个具有(日期/时间)格式名称的表。有没有办法在我的sqlite文件中加载所有表而不明确说明所有表的名称?
我有一个sqlite文件中的食物列表。 sqlite文件包含有关其中每个食品的大量信息。用户可以通过浏览sqlite文件并将项添加到其列表来创建自己的配方。列表中的每个项目都由tableview中的单元格表示。配方完成后,我希望用户能够保存它,并让系统自动将此配方作为单元格添加到不同的表视图中。这样,当有人选择单元格时,在下一个表格视图中显示整个配方(不仅仅是作为单元格标题的配方名称)
答案 0 :(得分: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的链接。