Загрузить или заполнить dataTable из базы данных sqLite local Ошибка: sqlite3_column_Origin_name - PullRequest
0 голосов
/ 05 декабря 2018

Я использую 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), и это не такПро метод (извините за мой плохой английский).

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