【问题标题】:Implement SQLite Xamarin.Forms - Unable to create SQLiteAsyncConnection实施 SQLite Xamarin.Forms - 无法创建 SQLiteAsyncConnection
【发布时间】:2018-07-23 19:15:13
【问题描述】:

我正在尝试在本文中将 SQLite 实现到我的 Xamarin.Forms 共享资产项目中。

https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/databases/

在我的新手眼中,一切似乎都已正确设置,但是在创建数据库连接时似乎存在问题。它说它无法将类型 SQLite.SQLiteAsyncConnection 隐式转换为 TechsportiseApp.Data.TechsportiseData

我不知道这是为什么。有什么想法吗?

using System;
using System.Collections.Generic;
using System.Text;
using SQLite;
using Xamarin.Forms;
using static TechsportiseApp.Helpers.GlobalFunctions;
using TechsportiseApp.Models;
using System.Threading.Tasks;

namespace TechsportiseApp.Data
{
    class TechsportiseData
    {

        public TechsportiseData(string dbPath)
        {
            database = new SQLite.SQLiteAsyncConnection(dbPath);
            database.CreateTableAsync<Scan>().Wait();
            database.CreateTableAsync<Timing>().Wait();
        }

        static TechsportiseData database;

        public static TechsportiseData Database
        {
            get
            {
                if (database == null)
                {
                    database = new TechsportiseData(DependencyService.Get<IFileHelper>().GetLocalFilePath("TechsportiseData.db3"));
                }
                return database;
            }
        }

        public Task<List<Timing>> GetTimingsAsync()
        {
            return database.Table<Timing>().ToListAsync();
        }

        public Task<List<Timing>> GetTimingsNotUploadedAsync()
        {
            return database.QueryAsync<Timing>("SELECT * FROM [Timing] WHERE [Uploaded] = 0");
        }

        public Task<Timing> GetTimingAsync(int id)
        {
            return database.Table<Timing>().Where(i => i.ID == id).FirstOrDefaultAsync();
        }

        public Task<int> SaveTimingAsync(Timing timing)
        {
            if (timing.ID != 0)
            {
                return database.UpdateAsync(timing);
            }
            else
            {
                return database.InsertAsync(timing);
            }
        }

        public Task<int> DeleteTimingAsync(Timing timing)
        {
            return database.DeleteAsync(timing);
        }

        public Task<int> DeleteAllTimingsAsync()
        {
            return database.DeleteAllAsync(timing);
        }

        public Task<List<Scan>> GetScansAsync()
        {
            return database.Table<Scan>().ToListAsync();
        }

        public Task<List<Scan>> GetScansNotUploadedAsync()
        {
            return database.QueryAsync<Timing>("SELECT * FROM [Scan] WHERE [Uploaded] = 0");
        }

        public Task<Scan> GetScanAsync(int id)
        {
            return database.Table<Scan>().Where(i => i.ID == id).FirstOrDefaultAsync();
        }

        public Task<int> SaveScanAsync(Scan scan)
        {
            if (scan.ID != 0)
            {
                return database.UpdateAsync(scan);
            }
            else
            {
                return database.InsertAsync(scan);
            }
        }

        public Task<int> DeleteScanAsync(Scan scan)
        {
            return database.DeleteAsync(scan);
        }

        public Task<int> DeleteAllScanssAsync()
        {
            return database.DeleteAllAsync(scan);
        }
    }
}

【问题讨论】:

  • 嗯,我的蜘蛛侠感觉你没有完全和彻底地遵循教程

标签: c# sqlite xamarin.forms


【解决方案1】:

首先也是最明显的一点是这没有意义

static TechsportiseData database;

改成这个

readonly SQLiteAsyncConnection database;

【讨论】:

    【解决方案2】:

    原来是这段代码

    static TechsportiseData database;
    
    public static TechsportiseData Database
    {
        get
        {
            if (database == null)
            {
                database = new TechsportiseData(DependencyService.Get<IFileHelper>().GetLocalFilePath("TechsportiseData.db3"));
            }
            return database;
        }
    }
    

    需要在我没有意识到的 App.cs 中。现在看起来不错!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多