Xamarin: как использовать существующую базу данных - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь использовать существующую базу данных sqlite в моем приложении. Не уверен, как это сделать. Я видел несколько предложений в Интернете, но не нашел ничего полезного.

1 Ответ

1 голос
/ 30 марта 2020

Согласно вашему описанию, вы добавляете одну базу данных sqlite в Assest в проекте Android, теперь вы хотите использовать этот sqlite.

Во-первых, установите Sqlite. net .core во всех трех PCL, Android и IOS Проекты, SQLite. Net .Платформа. Xamarin Android в Android Проект.

enter image description here

Тогда вы Создайте интерфейс IDatabase.cs в PCL:

 public interface IDatabase
{
    SQLite.Net.SQLiteConnection createconnection();
}

Реализация этого интерфейса в Android для получения SqliteConnection.

public class GetDatabase : IDatabase
{
    public SQLite.Net.SQLiteConnection createconnection()
    {
        var fileName = "SQLite.db3";
        var documentPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
        var path = Path.Combine(documentPath, fileName);

        if(!File.Exists(path))
        {
            using (BinaryReader br = new BinaryReader(Android.App.Application.Context.Assets.Open(fileName)))
            {
                using (BinaryWriter bw = new BinaryWriter(new FileStream(path, FileMode.Create)))
                {
                    byte[] buffer = new byte[2048];
                    int len = 0;
                    while ((len = br.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        bw.Write(buffer, 0, len);
                    }
                }
            }
        }

        var plat = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
        var conn = new SQLite.Net.SQLiteConnection(plat, path);

        return conn;
        //var plat = new SQLite.Net.Plataform.XamarinAndroid.SqlitePlatformAndroid();



    }

Обратите внимание: SQLite. Net .Платформа .Xamarin Android более ранние версии установка прошла успешно. Однако он выдаст сообщение об ошибке «Пакет SQLite. Net .Platform.XamarinAndroidN 3.1.1 не совместим с monoandroid90 (Mono Android, Version = v9.0)», и установка пакета завершится неудачно. Это ошибка, и решение не доступно на сегодняшний день. Вы можете скопировать эту dll с по этой ссылке , чтобы добавить свой android проект.

Более подробную информацию, пожалуйста, посмотрите:

Использование локальной базы данных в Xamarin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...