【问题标题】:Populate SQLite data onto UWP App将 SQLite 数据填充到 UWP 应用中
【发布时间】:2017-08-29 19:32:58
【问题描述】:

我想将 SQLite 数据填充到我的应用程序中。

假设我创建了一个应用程序来记录正在进行的足球比赛的详细信息。 我有 3 个文本框(teamName、goalScored、goalConceded)和一个用于将这些值插入数据库的按钮。 还可以说我已将详细信息插入到数据库中。

我想要将这些数据/详细信息从数据库填充到我的应用程序中的 ListView(在 XAML 中定义)。

【问题讨论】:

  • 您需要更具体地解决您的问题,并展示您迄今为止尝试过的示例。一般来说,SO 不会很好地回答如此广泛的问题。请发布您迄今为止实施的所有语言和流程的代码。
  • 到目前为止,您尝试了哪些方法来从数据库中检索数据并将其显示在您的 UI 上?请阅读minimal reproducible example

标签: c# xaml sqlite uwp


【解决方案1】:

将您的 ListView 绑定到 ViewModel 属性(通常是 ObservableCollection)。 然后插入后只需更新 ObservableCollection 数据。

【讨论】:

    【解决方案2】:

    我想要将这些数据/详细信息从数据库填充到我的应用程序中的 ListView(在 XAML 中定义)。

    首先您需要根据您的要求从数据库中查询数据。如何获取数据取决于您用于 UWP 应用的 SQLite Nuget 包。其次,您可能需要将数据读取到源集合,可能是@Ion Caisîn 所说的ObservableCollection。这里最好的做法是拥有实体,为表数据构建模型。最后将源绑定到ListView

    以下是一个关于从 SQLite 数据库读取数据并将数据绑定到ListView 的简单演示。我正在使用SQLitePCL Nuget 包。

    XAML 代码:

    <Button x:Name="btngetdata" Content="get data" Click="btngetdata_Click"></Button>
    <ListView x:Name="ListCustomer" SelectionMode="None">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Margin="2,10,0,0" Text="{Binding Name}" />
                    <TextBlock Margin="2,10,0,0" Text="{Binding City}" />
                    <TextBlock Margin="2,10,0,0" Text="{Binding Contact}" />
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    

    后面的代码:

    public sealed partial class MainPage : Page
    { 
       ...
        private void btngetdata_Click(object sender, RoutedEventArgs e)
        {
            ListCustomer.ItemsSource = SQLiteHelp.getValues();
        }
    }
    
    public class SQLiteHelp
    {
        private static string DbName = "Sun.db";       
        public static ObservableCollection<Customer> getValues()
        {
            ObservableCollection<Customer> list = new ObservableCollection<Customer>();
            using (var connection = new SQLiteConnection(DbName))
            {
                using (var statement = connection.Prepare(@"SELECT * FROM CUSTOMER;"))
                {
                    while (statement.Step() == SQLiteResult.ROW)
                    {
                        list.Add(new Customer()
                        {
                            Id = Convert.ToInt32(statement[0]),
                            Name = (string)statement[1],
                            City = (string)statement[2],
                            Contact = statement[3].ToString()
                        });
    
                        Debug.WriteLine(statement[0] + " ---" + statement[1] + " ---" + statement[2] + statement[3]);
                    }
                }
            }
            return list;
        }
    
    }
    public class Customer
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string City { get; set; }
        public string Contact { get; set; }
    }
    

    更多详细信息请参考this guide,它用于 UWP 中的 SQLite 本地数据库。还有一个 SQLite in UWP app sample 使用 Microsoft.Data.SQLite 包,您也可以参考。

    【讨论】:

      猜你喜欢
      • 2017-03-28
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多