【问题标题】:Xamarin Forms Sqllite Database not return all recordsXamarin Forms Sqlite 数据库不返回所有记录
【发布时间】:2019-08-31 10:16:32
【问题描述】:

我在我的 xamarin 表单应用程序中创建了一个 sqlite 数据库。数据库正在保存记录,但是当我查询数据库以列出/显示记录时,它只显示其中的一些,而不是全部。当我使用以下代码查询数据库时,它将显示第一次查询的 1 条记录,第二次查询的 2 条记录,第三次查询的 5 条记录和第四次查询的 6 条记录,以提取与数据库相同的记录。

List<Words> abc = await App.Database.GetWordsAsync();
System.Console.WriteLine("abccount: " + abc.Count);
foreach (var abc1 in abc)
{
   System.Console.WriteLine("abcitem: " + abc1.Word + " - ID: " + abc1.ID);
}
List<Words> abc2 = await App.Database.GetWordsAsync();
System.Console.WriteLine("abc3count: " + abc2.Count);
foreach (var abc3 in abc2)
{
   System.Console.WriteLine("abc3item: " + abc3.Word + " - ID: " + abc3.ID);
}

结果如下:

08-31 10:00:40 I/mono-stdout(25307): abc1count: 1
08-31 10:00:40 I/mono-stdout(25307): abc1item: ass - ID: 1

08-31 10:00:40 I/mono-stdout(25307): abc2count: 2
08-31 10:00:40 I/mono-stdout(25307): abc2item: ass - ID: 1
08-31 10:00:40 I/mono-stdout(25307): abc2item: blackhead - ID: 2

08-31 10:00:40 I/mono-stdout(25307): abccount: 5
08-31 10:00:40 I/mono-stdout(25307): abcitem: ass - ID: 1
08-31 10:00:40 I/mono-stdout(25307): abcitem: blackhead - ID: 2
08-31 10:00:40 I/mono-stdout(25307): abcitem: bozo - ID: 3
08-31 10:00:40 I/mono-stdout(25307): abcitem: ego - ID: 4
08-31 10:00:40 I/mono-stdout(25307): abcitem: oaf - ID: 5

08-31 10:00:40 I/mono-stdout(25307): abc3count: 6
08-31 10:00:40 I/mono-stdout(25307): abc3item: ass - ID: 1
08-31 10:00:40 I/mono-stdout(25307): abc3item: blackhead - ID: 2
08-31 10:00:40 I/mono-stdout(25307): abc3item: bozo - ID: 3
08-31 10:00:40 I/mono-stdout(25307): abc3item: ego - ID: 4
08-31 10:00:40 I/mono-stdout(25307): abc3item: oaf - ID: 5
08-31 10:00:40 I/mono-stdout(25307): abc3item: redfish - ID: 6

我在 App.xaml.cs 中的数据库连接如下:

        public static WordSearchDatabase Database
        {
            get
            {
                if (database == null)
                {
                    database = new WordSearchDatabase(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "wordsearch.db3"));
                }
                return database;
            }
        }

我的数据库查询界面如下:

    public class WordSearchDatabase
    {
        readonly SQLiteAsyncConnection database;

        public WordSearchDatabase(string dbPath)
        {
            database = new SQLiteAsyncConnection(dbPath);
            database.CreateTableAsync<Words>().Wait();
        }

        public Task<List<Words>> GetWordsAsync()
        {
            return database.Table<Words>().ToListAsync();
        }
    }

谁能告诉我为什么同一个查询 GetWordsAsync 每次调用它时都会从数据库中提取不同数量的记录。

【问题讨论】:

    标签: database forms sqlite xamarin


    【解决方案1】:

    Concole.WriteLine 导致错误。你可以改用Debug.Writeline

    代码:

    List<Words> abc = await App.Database.GetWordsAsync();
    
            System.Diagnostics.Debug.WriteLine("abccount: " + abc.Count);
            foreach (var abc1 in abc)
            {
                System.Diagnostics.Debug.WriteLine("abcitem: " + abc1.Word + " - ID: " + abc1.ID);
            }
    
            List<Words> abc2 = await App.Database.GetWordsAsync();
    
            System.Diagnostics.Debug.WriteLine("abc3count: " + abc2.Count);
            foreach (var abc3 in abc2)
            {
                System.Diagnostics.Debug.WriteLine("abc3item: " + abc3.Word + " - ID: " + abc3.ID);
            }
    

    我的结果:

    我们可以在它所属的控制台应用程序中使用Console.WriteLine,并在其他任何地方使用Debug.WriteLine

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 2021-06-06
      • 2018-11-13
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      • 2019-05-26
      • 1970-01-01
      相关资源
      最近更新 更多