【发布时间】:2019-03-29 16:09:16
【问题描述】:
不能使用多个表。如何处理两张、三张或更多张桌子?
Visual Studio >>> Xamarin-Forms
/// I think maybe this code needs to be fixed somehow.
/// this code is placed in App.cs (up)
static Data.TableTwo tabletwo;
static Data.TableOne tableone;
/// crashed
public Task<int> SaveItemAsync(TableTwo item)
{
if (item.ID != 0)
{
return tabletwo.UpdateAsync(item);
}
else
{
return tabletwo.InsertAsync(item);
}
}
/// ***I think maybe this code needs to be fixed somehow.
/// this code is placed in App.cs (down below)
public static Data.TableTwo tabletwo
{
get
{
if (datadistance == null)
{
tabletwo = new Data.TableTwo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "TodoSQLite.db3"));
}
return tabletwo;
}
}
/// ***I think maybe this code needs to be fixed somehow.
/// this code is placed in App.cs (down below)
public static Data.TableOne tableone
{
get
{
if (tableone == null)
{
tableone = new Data.TableOne(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "TodoSQLite.db3"));
}
return tableone;
}
}
上面的代码可以正常工作。当上面的代码被调用时。申请失败。
我有两张桌子。当用户工作时使用一张表(保存和删除数据),那么一切正常。如果用户开始使用另一个表(保存数据),应用程序就会崩溃。
!!!应用程序树!!! 数据库(文件夹) 表二(文件) 表一(文件) 模型(文件夹) 表二(文件) 表一(文件)
一切都按照文章https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/databases#using-sqlite中的代码完成
实际上,我只是将代码复制了第二次,然后粘贴到项目中。 - 这就是我创建第二个表并使用它(删除插入数据)所做的工作
【问题讨论】:
-
我认为您应该停下来重新阅读文档。您正在创建两个单独的连接,都使用相同的数据库路径。这与在同一个数据库中创建两个表不同。应该不需要为每个表创建连接。
-
public Task<int> SaveItemAsync(TodoItem item) { if (item.ID != 0) { return database.UpdateAsync(item); } else { return database.InsertAsync(item); } }我可以创建一个数据库连接。但是后来我无法在表中创建单独的查询,这里我只是不明白该怎么做。我试过但失败了。 -
做什么?您要运行哪些查询?两张表是什么?在该示例中,TodoItem 映射到一个表。如果您想要另一个表,请创建另一个将映射到另一个表的模型。
标签: sqlite xamarin.forms