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