我正在使用Xamarin表单构建跨平台移动应用程序。我现在遇到的问题是:我有一个页面,我想在该页面的ListView
中显示来自数据库的信息。 sqlite数据库中也有两个表。
首先,我为页面创建了OnAppearing
方法的替代,以便一旦页面出现,数据就会显示出来。
然后在里面打开一个sqlite连接,就像这样
using(SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
{
//about to put the code here in the next step
}
然后在其中尝试这样从数据库创建表(通过“ ModelName”表示包含与sqlite数据库中的数据对齐的模型的类的名称)
conn.CreateTable<ModelName>
,然后尝试使用查询,然后将其设置为ListView的ItemSource
ListViewName.ItemSource = conn.Query<ModelName>("SELECT * FROM databaseTableName;");
在前端,我已经像这样设置了数据绑定。
<ListView x:Name="ListViewName">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding ModelName}" Detail="{Binding ModelName}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
注意:我也尝试过这样设置绑定
Text="{Binding ColumnNameFromTable}"
当我运行它时,我收到一条错误消息,说该表不存在,但是我在项目中有sqlite数据库(在android项目的资产文件夹中,在iOS项目的resources文件夹中) 桌子在那里。所以我不知道我要去哪里错了
还要回答有关什么的问题
(App.DatabaseLocation)
分别在MainActivity.cs和AppDelegate.cs中设置为以下
//in MainActivity.cs
string dbName = "DatabaseName.db";
string folderPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
string fullPath = Path.Combine(folderPath, dbName);
LoadApplication(new App(fullPath));
//in AppDelegate.cs
string dbName = "DatabaseName.db";
string folderPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),"..", "Library");
string fullPath = Path.Combine(folderPath, dbName);
LoadApplication(new App(fullPath));
我感谢任何人都能提供比我更明智的帮助。感谢您抽出宝贵的时间阅读并回答我的问题。我要感谢您的永恒的感谢!
答案 0 :(得分:1)
如果您使用Xamarin Forms,则无需在MainActivity.cs和AppDelegate.cs中为本地数据库设置任何内容。 阅读本指南将最好地解释如何在Xamarin Forms上使用sqllite https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/databases
简单的示例代码可以在这里找到: https://github.com/xamarin/xamarin-forms-samples/tree/master/Todo 此示例已将数据像您想要的那样检索到列表视图。