Selam arkadaşlar,
Sqlite veritabanı kullandığım bir projem var. Editörde veritabanı çalışıyor fakat android'de çalışmıyor.
"Unable to open the database file" hatası veriyor.
Database kitletmiş olabilir o yüzden açılamıyordur hatanın daha uzun bir açıklaması var mı ?
Yok malesef. Daha fazla ayrıntıya nasıl ulaşılıyor.
Android'de hata veriyor derken build aldıktan sonra mı hata alıyorsun tam olarak o kısmı anlamadım.
Evet apk yı telefona yukledikten sonra uygulama veritabanına bağlanmaya çalışınca bu hatayı veriyor. Editörde normal çalışıyor.
Kodlarda ki SQL bölümünü buraya atabilir misin inceleyebilmemiz için.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mono.Data.Sqlite;
using System.Data;
using System;
public class Db : MonoBehaviour
{
private string conn, sqlQuery;
IDbConnection dbconn;
IDbCommand dbcmd;
// Use this for initialization
void Awake()
{
conn = "URI=file:" + Application.dataPath + "/StreamingAssets/LocalDb.s3db"; //Path to database.
//Deletvalue(6);
//insertvalue("ahmedm", "ahmedm@gmail.com", "sss");
//Updatevalue("a", "w@gamil.com", "1st", 1);
//readers();
}
private void insertvalue(string name, string email, string address)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("insert into SpecialWords (Name, Email, Address) values (\"{0}\",\"{1}\",\"{2}\")", name, email, address);// table name
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
}
}
private void Deletvalue(int id)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("Delete from SpecialWords WHERE ID=\"{0}\"", id);// table name
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
}
}
private void Updatevalue(string name, string email, string address, int id)
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
dbcmd = dbconn.CreateCommand();
sqlQuery = string.Format("UPDATE SpecialWords set Name=\"{0}\", Email=\"{1}\", Address=\"{2}\" WHERE ID=\"{3}\" ", name, email, address, id);// table name
dbcmd.CommandText = sqlQuery;
dbcmd.ExecuteScalar();
dbconn.Close();
}
}
public ItemContainer readers()
{
using (dbconn = new SqliteConnection(conn))
{
dbconn.Open(); //Open connection to the database.
dbcmd = dbconn.CreateCommand();
sqlQuery = "SELECT * " + "FROM SpecialWords";// table name
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
ItemContainer ic=new ItemContainer();
Item item=new Item();
while (reader.Read())
{
int id = reader.GetInt32(0);
string wordEng = reader.GetString(1);
string wordTr = reader.GetString(2);
//string Phone = reader.GetString(3);
item.wordEng = wordEng;
item.wordTr = wordTr;
ic.items.Add(item);
//Debug.Log("value= " + id + " Eng =" + wordEng + " Tr =" + wordTr);
}
for (int i = 0; i < ic.items.Count; i++)
{
Debug.Log(" Eng =" + ic.items[i].wordEng + " Tr =" + ic.items[i].wordTr);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
dbconn = null;
return ic;
}
}
// Update is called once per frame
void Update()
{
}
}
Çok fazla sql kodu var hatanın nereden kaynaklandığını bulmak için önce sadece DB'ye open yaparak düzgün şekilde açabiliyor mu diye kontrol et daha sonrasında diğer işlemleri kontrol et genelde Update'de yada Insert işlemlerinde bu hatalar çıkıyor onu kontrol eder misin ?.
Tamam tekrar deneyeceğim. Şu an sadece veritabanından veri okuma işlemi yapıyorum.
En basit sql sorgusuyla denedim yine aynı hatayı veriyor. Database i StreamingAsset klasörune oluşturdum. Zaten dosyayı bulamadım demiyor açamıyorum diyor. Unity'nin forumunda da baya araştırdım ama çözemedim. Takıldımı takılıyor bazen
