如何使用SQLite数据库中的数据填充ListView

时间:2019-06-10 21:47:12

标签: c# visual-studio sqlite xaml

我正在使用Xamarin表单构建跨平台移动应用程序。我现在遇到的问题是:我有一个页面,我想在该页面的ListView中显示来自数据库的信息。 sqlite数据库中也有两个表。

  1. 首先,我为页面创建了OnAppearing方法的替代,以便一旦页面出现,数据就会显示出来。

  2. 然后在里面打开一个sqlite连接,就像这样

    using(SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
    {
      //about to put the code here in the next step
    }
    
  3. 然后在其中尝试这样从数据库创建表(通过“ ModelName”表示包含与sqlite数据库中的数据对齐的模型的类的名称)

    conn.CreateTable<ModelName>
    
  4. ,然后尝试使用查询,然后将其设置为ListView的ItemSource

    ListViewName.ItemSource = conn.Query<ModelName>("SELECT * FROM databaseTableName;");
    
  5. 在前端,我已经像这样设置了数据绑定。

    <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));

我感谢任何人都能提供比我更明智的帮助。感谢您抽出宝贵的时间阅读并回答我的问题。我要感谢您的永恒的感谢!

1 个答案:

答案 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 此示例已将数据像您想要的那样检索到列表视图。