#android #sqlite #unity3d #unityscript
#Android #sqlite #unity3d #unityscript
Вопрос:
Я пытался использовать sqlite db с Unity Android,
Сначала я попробовал 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 free до pro.
Теперь я могу создать проект Unity для устройства Android, но функции базы данных не работают.
Затем я попробовал со всеми примерами, прикрепленными к приведенной ниже теме, http://forum.unity3d.com/threads/sqlite-for-android-help-please.97043 /
Но в редакторе все работает нормально, но в устройстве функции базы данных не работают.
Как я могу это решить?
Комментарии:
1. у вас есть
sqlite3.so
файл в вашемPlugins/Android
каталоге?2. @Lesori, да sqlite3.so есть там. Теперь я решил ее :).
3. откуда у вас sqlite3.so ?
Ответ №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(); ```.