SqliteConnection Xamarin表单异常未处理?

SqliteConnection Xamarin表单异常未处理?,sqlite,xamarin.forms,Sqlite,Xamarin.forms,当我尝试运行该项目时,会出现这样的错误:“System.NullReferenceException:对象引用未设置为对象的实例” 在此代码中指出: sqliteconnection=DependencyService.Get().GetConnection() 这是我的DB操作类: namespace DevoApp.DevoAppFinal.Helpers { public class DatabaseHelper { static SQLiteConnect

当我尝试运行该项目时,会出现这样的错误:“System.NullReferenceException:对象引用未设置为对象的实例”

在此代码中指出: sqliteconnection=DependencyService.Get().GetConnection()

这是我的DB操作类:

namespace DevoApp.DevoAppFinal.Helpers
{
    public class DatabaseHelper
    {
        static SQLiteConnection sqliteconnection;
        public const string DbFileName = "Devotion.db";

        public DatabaseHelper()
        {
            sqliteconnection = DependencyService.Get<ISQLite>().GetConnection();
            sqliteconnection.CreateTable<Devotion>();
        }

        // Get All Contact data    
        public List<Devotion> GetAllDevotionsData()
        {
            return (from data in sqliteconnection.Table<Devotion>() select data).ToList();
        }

        //Get Specific Contact data
        public Devotion GetDevotionData(int id)
        {
            return sqliteconnection.Table<Devotion>().FirstOrDefault(t => t.devotionalId == id);
        }

        // Delete all Contacts Data
        public void DeleteAllDevotions()
        {
            sqliteconnection.DeleteAll<Devotion>();
        }

        // Delete Specific Contact
        public void DeleteDevotion(int id)
        {
            sqliteconnection.Delete<Devotion>(id);
        }

        // Insert new Contact to DB 
        public void InsertDevotion(Devotion contact)
        {
            sqliteconnection.Insert(contact);
        }

        // Update Contact Data
        public void UpdateDevotion(Devotion contact)
        {
            sqliteconnection.Update(contact);
        }
    }
}
namespace DevoApp.DevoAppFinal.Helpers
{
公共类数据库助手
{
静态SQLiteConnection SQLiteConnection;
public const string DbFileName=“pilture.db”;
公共数据库助手()
{
sqliteconnection=DependencyService.Get().GetConnection();
sqliteconnection.CreateTable();
}
//获取所有联系人数据
公共列表GetAllInvoitionData()
{
返回(从sqliteconnection.Table()中的数据选择data.ToList();
}
//获取特定的联系人数据
公共数据(int id)
{
返回sqliteconnection.Table().FirstOrDefault(t=>t.devigationalId==id);
}
//删除所有联系人数据
公开无效删除所有奉献()
{
sqliteconnection.DeleteAll();
}
//删除特定联系人
公共id(内部id)
{
sqliteconnection.Delete(id);
}
//将新联系人插入数据库
公开无效插入奉献(奉献联系人)
{
sqliteconnection.Insert(contact);
}
//更新联系人数据
公共无效更新版本(联系人)
{
sqliteconnection.Update(联系人);
}
}
}

使用DependencyService时,必须在每个目标平台项目中实现接口

在这种情况下,您应该在目标平台(即iOS和Android)上实现ISQLite接口

要使Xamarin在运行时找到它,您必须使用命名空间上方的
依赖项
属性注册实现。根据项目的一些假设,观察以下示例

在共享库中,您已声明接口:

public interface ISQLite
{
    // Members here
}
那里发生的事没什么特别的。然后,对于每个平台,如果要在其上运行应用程序,请执行以下操作:

[assembly: Xamarin.Forms.Dependency (typeof (SQLiteImplementation_iOS))]
namespace DevoApp.DevoAppFinal.iOS
{
    public class SQLiteImplementation_iOS : ISQLite
    {
        // ... Your code
    }
}

从错误中可以看出,您似乎忘记添加属性了

谢谢您,先生。已完成放置依赖项,但出现了相同的问题。[程序集:Xamarin.Forms.dependency(typeof(SQLiteDb))]命名空间DevoApp.Droid.Persistence{}