Я использую Unity 2018 для создания игр для Android, поэтому я использую sqlite локальную базу данных в своем проекте.Копирование адреса базы данных в 2 папки: 1) \Assets\youtube.bytes
2) \Assets\StreamingAssets\youtube.bytes
Мой метод доступа к базе данных:
string newDBPath = "";
if (Application.platform != RuntimePlatform.Android)
{
newDBPath = Application.dataPath + "/" + "youtube.bytes";
}
else
{
newDBPath = Application.persistentDataPath + "/" + "youtube.bytes";
if (!File.Exists(newDBPath))
{
WWW loadDB = new WWW("jar:file://" + Application.dataPath +
"!/assets/" + "youtube.bytes");
while (!loadDB.isDone) { }
File.WriteAllBytes(newDBPath, loadDB.bytes);
}
}
DataTable dataTable1 = new DataTable();
SqliteConnection con_db = new SqliteConnection("URI=file:" + newDBPath);
con_db.Open();
if (con_db.State == ConnectionState.Open)
{
SqliteCommand cmd_db = new SqliteCommand("Select * from Users", con_db);
SqliteDataReader rdr = cmd_db.ExecuteReader();
для заполнения DataTable:
dataTable1.Load(rdr);
для проверки iиспользуйте этот код:
if (dataTable1.Rows.Count > 0)
{
txtID.text = dataTable1.Rows[0][0].ToString().Trim();
}
, но на устройстве Android верните эту ошибку: sqlite3_column_Origin_name ... Mono.Data.SqLite.sqLite3.ColumnOriginalName, поэтому я попробовал это:
SqliteDataAdapter da = new SqliteDataAdapter(sqlText, con_db);
da.Fill(dataTable1);
, но вернулОшибка Опять же, поэтому я создаю вручную столбцы и строки, например:
if (rdr.HasRows)
{
dataTable1.Columns.Add(rdr.GetName(0), typeof(string));
dataTable1.Columns.Add(rdr.GetName(1), typeof(string));
dataTable1.Columns.Add(rdr.GetName(2), typeof(string));
while (rdr.Read())
{
dataTable1.Rows.Add(rdr[0].ToString(), rdr[1].ToString(), rdr[2].ToString());
}
}
все работает нормально, но иногда я не знаю, сколько столбцов в таблице базы данных, сколько чисел равно rdr.GetName (0)
, и это не такПро метод (извините за мой плохой английский).