Проблема с Unity Sqlite на Android

Я пытался использовать sqlite db с Android Unity,

Сначала я попробовал http://wiki.unity3d.com/index.php?title=SQLite, он отлично работает в редакторе, но не может собрать для Android.

Я получил это Error:"SystemException: 'System.Net.Sockets' are supported only with Unity Android Pro. Referenced from assembly 'Mono.Data.Tds."

Затем я обновил Unity бесплатно до Pro.

Теперь я могу создать проект единства для устройства Android, но функции базы данных не работают.

Затем я попробовал со всем примером, прикрепленным к приведенной ниже теме, http://forum.unity3d.com/threads/sqlite-for-android-help-please.97043/

Но в редакторе все работает нормально, а в устройстве никакие функции базы данных не работают.

Как я могу это решить?


person 1'hafs    schedule 22.06.2014    source источник
comment
у вас есть файл sqlite3.so в вашем каталоге Plugins/Android?   -  person Stefan Hoffmann    schedule 22.06.2014
comment
@Lesori, да sqlite3.so есть. Я решил это сейчас :).   -  person 1'hafs    schedule 23.06.2014
comment
где вы взяли sqlite3.so?   -  person wh3resmycar2    schedule 19.03.2017


Ответы (1)


Добавить эту ссылку

using Mono.Data.Sqlite;

using System;

using System.Data;

using System.IO;

using UnityEngine.UI;

можно скачать для https://github.com/walidabazo/SQLiteUnity3d_Android


IDbConnection dbconn;

IDbCommand dbcmd;

private IDataReader reader;

string filepath = Application.persistentDataPath + "/" + DatabaseName;

// If not found on android will create Tables and database

        Debug.LogWarning("File \"" + filepath + "\" does not exist. Attempting to create from \"" +
                         Application.dataPath + "!/assets/Employers");



        // #UNITY_ANDROID
        WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/Employers.s3db");
        while (!loadDB.isDone) { }
        // then save to Application.persistentDataPath
        File.WriteAllBytes(filepath, loadDB.bytes); 


     conn = "URI=file:" + filepath;

    Debug.Log("Stablishing connection to: " + conn);
    dbconn = new SqliteConnection(conn);
    dbconn.Open();

Table Name (Staff) Have ID is PRIMARY KEY , Name, Address

    string query;
    query = "CREATE TABLE Staff (ID INTEGER PRIMARY KEY   AUTOINCREMENT, Name varchar(100), Address varchar(200))";
    try
    {
        dbcmd = dbconn.CreateCommand(); // create empty command
        dbcmd.CommandText = query; // fill the command
        reader = dbcmd.ExecuteReader(); // execute command which returns a reader
    }
    catch (Exception e)
    {

        Debug.Log(e);

    }

To Select Sqlite

    string Name_readers, Address_readers;
     using (dbconn = new SqliteConnection(conn))
    {
        dbconn.Open(); //Open connection to the database.
        IDbCommand dbcmd = dbconn.CreateCommand();
        string sqlQuery = "SELECT  Name, Address " + "FROM Staff";// table name
        dbcmd.CommandText = sqlQuery;
        IDataReader reader = dbcmd.ExecuteReader();
        while (reader.Read())
        {

            Name_readers = reader.GetString(0);
            Address_readers = reader.GetString(1);


            Debug.Log(" name =" + Name_readers + "Address=" + Address_readers);
        }
        reader.Close();
        reader = null;
        dbcmd.Dispose();
        dbcmd = null;
        dbconn.Close(); ```.


person walid abdelazeem    schedule 17.04.2019