为了账号安全,请及时绑定邮箱和手机立即绑定

在Xamarin中使用本地数据库

/ 猿问

在Xamarin中使用本地数据库

天涯尽头无女友 2019-12-26 08:48:01

我已经开始使用Visual Studio的Xamarin插件来创建Android应用。

我有一个本地SQL数据库,我想调用它来显示数据。我不知道该怎么做。可能吗?


查看完整描述

2 回答

?
慕莱坞5435954

在认为这是一件微不足道的事情之后,当我尝试设置快速测试项目时,我被证明是错误的。这篇文章将包含有关在Xamarin中为Android应用程序设置数据库的完整教程,该指南将方便将来的Xamarin用户参考。


乍看上去:


将Sqlite.cs添加到您的项目。

将您的数据库文件添加为资产。

设置数据库文件以将其构建为AndroidAsset。

从apk手动将数据库文件复制到另一个目录。

使用Sqlite.SqliteConnection打开数据库连接。

使用Sqlite在数据库上进行操作。

为Xamarin Android项目设置本地数据库

1.将Sqlite.cs添加到您的项目。

首先转到该存储库并下载Sqlite.cs;这提供了可用于对数据库运行查询的Sqlite API。将文件作为源文件添加到项目中。


2.添加数据库作为资产。

接下来,获取您的数据库并将其复制到您的Android项目的Assets目录中,然后将其导入到您的项目中,以使其出现在解决方案中的Assets文件夹下:


在此处输入图片说明


在整个示例中,我都使用从该站点重命名为db.sqlite的Chinook_Sqlite.sqlite数据库示例。


3.将DB设置为AndroidAsset。

右键单击数据库文件,并将其设置为build action AndroidAsset。这将确保它包含在APK的资产目录中。


在此处输入图片说明


4.手动将数据库复制到APK中。

由于数据库作为资产(包含在APK中)作为资产包含在内,因此您需要将其提取出来。


您可以使用以下代码执行此操作:


string dbName = "db.sqlite";

string dbPath = Path.Combine (Android.OS.Environment.ExternalStorageDirectory.ToString (), dbName);

// Check if your DB has already been extracted.

if (!File.Exists(dbPath))

{

    using (BinaryReader br = new BinaryReader(Android.App.Application.Context.Assets.Open(dbName)))

    {

        using (BinaryWriter bw = new BinaryWriter(new FileStream(dbPath, FileMode.Create)))

        {

            byte[] buffer = new byte[2048];

            int len = 0;

            while ((len = br.Read(buffer, 0, buffer.Length)) > 0)

            {

                bw.Write (buffer, 0, len);

            }

        }

    }

}

这将从DB提取DB作为二进制文件并将其放入系统外部存储路径。实际上,数据库可以放到您想要的任何地方,我只是选择将其放在此处。


我还读到Android拥有一个数据库文件夹,该文件夹将直接存储数据库。我无法使其正常工作,所以我只是使用这种使用现有数据库的方法来运行。


5.打开数据库连接。

现在,通过Sqlite.SqliteConnection类打开与数据库的连接:


using (var conn = new SQLite.SQLiteConnection(dbPath))

{

        // Do stuff here...

}

6.在数据库上操作。

最后,由于Sqlite.net是ORM,因此您可以使用自己的数据类型对数据库进行操作:


public class Album

{

    [PrimaryKey, AutoIncrement]

    public int AlbumId { get; set; }

    public string Title { get; set; }

    public int ArtistId { get; set; }

}


// Other code...


using (var conn = new SQLite.SQLiteConnection(dbPath))

{

    var cmd = new SQLite.SQLiteCommand (conn);

    cmd.CommandText = "select * from Album";

    var r = cmd.ExecuteQuery<Album> ();


    Console.Write (r);

}

摘要

这就是向您的Android Xamarin解决方案中添加现有Sqlite数据库的方法!有关更多信息,请查看Sqlite.net库附带的示例,其单元测试以及Xamarin文档中的示例。


查看完整回答
反对 回复 2019-12-26
?
慕的地6264312

这是我正在使用并且正在工作的那个

  • 安装Sqlite插件

  • 创建界面以访问不同的平台服务

  • 为表格创建模型

  • 在您要使用的所有平台上实现您先前创建的接口

  • 使用插件在表上创建,获取,插入等

有关更多详细信息,请检查此


查看完整回答
反对 回复 2019-12-26

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信