Xamarin在这里构成新手,并且我正在尝试建立SQLite连接,以便可以与应用程序中创建的数据库进行交互。
我在IDE中对此没有任何标志,但是当我编译时,出现了空引用错误!具体来说,我的_SQLiteConnection变量为null,我认为这可能与未正确设置路径有关?
我已经参考了一些在线进行此操作的指南,尽管有些陈旧,但他们还是以与我相同的方式进行设置。
这里有一些代码:
UserDb.cs:
using PluralBuddy.Models;
using SQLite;
using System.Collections.Generic;
using System.Linq;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace PluralBuddy.Data
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public class UserDB
{
private SQLiteConnection _SQLiteConnection;
public UserDB()
{
_SQLiteConnection = DependencyService.Get<ISQLiteInterface>().GetConnection();
_SQLiteConnection.CreateTable<User>();
}
ISQLiteInterface.cs:
using SQLite;
namespace PluralBuddy.Models
{
public interface ISQLiteInterface
{
SQLiteConnection GetConnection();
}
}
参考:
https://code.tutsplus.com/tutorials/an-introduction-to-xamarinforms-and-sqlite--cms-23020
https://dzone.com/articles/register-and-login-using-sqlite-in-xamarinforms
一如既往,我们将不胜感激!
答案 0 :(得分:0)
因此,对于偶然发现本文的人,以寻找类似问题的答案,请确保您正在初始化数据库并为其提供路径。请严格遵循指南,因为它们经常会遗漏重要的上下文,无论是有意还是无意。
这就是我所做的
在App.Xaml中
using PluralBuddy.Data;
using PluralBuddy.Views;
using System;
using System.IO;
using Xamarin.Forms;
namespace PluralBuddy
{
public partial class App : Application
{
static UserDB userDB;
public static UserDB UserDB
{
get
{
if (userDB == null)
{
userDB = new UserDB(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "user.db3"));
}
return userDB;
}
}
UserDB.cs
namespace PluralBuddy.Data
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public class UserDB
{
private readonly SQLiteConnection _SQLiteConnection;
public UserDB(string dbPath)
{
_SQLiteConnection = new SQLiteConnection(dbPath);
_SQLiteConnection.CreateTable<User>();
}
以防万一有人需要它,这是来自原始帖子中引用的同一个人的最新指南:
https://xmonkeys360.com/2019/07/10/register-login-and-update-using-sqlite-in-xamarin-forms/