من یک فایل دیتابیس درون پوشه Assets پروژه قرار داده ام.
اطلاعات از دیتابیسی که به صورت یک فایل db3 هست خوانده میشود و درون ایمولایتور بدون مشکلی نمایش داده می شود.
وقتی که در برنامه اطلاعات درون دیتابیس رو ویرایش یا پاک می کنم درون برنامه تغییرات اعمال می شود. برنامه بسته هم بشود یا اینکه سیستم ری استارت هم بشود باز هم همان تغییرات موجود می باشد.
ولی وقتی که فایل دیتابیسی که درون پروژه قرار دارد رو با SQLiteStudio باز می کنم هیچ تغییری در آن انجام نشده است.
پس اطلاعاتی که تغییر روی آن انجام شده است رو از کجا می خونه؟؟؟؟ اطلاعات رو اول از فایل دیتابیس خوند ولی وقتی ویرایش و یا حذف می شه ظاهرا از دیتابیس دیگه نمی خونه و جای دیگه ذخیره میشه.
آیا باید کار دیگری هم انجام می دادم که اطلاعات درون همون دیتابیسی تغییر کند که به بروژه اضافه شده است؟؟؟؟؟؟
کدهای کلاس DatabseFileAccess
class DatabseFileAccess { public static string GetLocalFilePath(string fileName) { string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); string dbPath = Path.Combine(path, fileName); CopyDattaBaseIfNotExists(dbPath,fileName); return dbPath; } public static void CopyDattaBaseIfNotExists(string dbPath,string fileName) { if(!File.Exists(dbPath)) { using (var br=new BinaryReader (Application.Context.Assets.Open(fileName))) { using(var bw=new BinaryWriter(new FileStream(dbPath,FileMode.Create))) { byte[] buffer=new byte[2048]; int lenght = 0; while((lenght=br.Read(buffer,0,buffer.Length))>0) { bw.Write(buffer, 0, lenght); } } } } } }
کدهای کلاس DAL
[Table("Contents")] public class Book { [PrimaryKey,AutoIncrement] public int Id { get; set; } [Default(value:1)] public int NameBookId { get; set; } [MaxLength(250)] public string Subject { get; set; } public string Contect { get; set; } [Default(value:false)] public bool fav { get; set; } [Default(value: false)] public bool See { get; set; } } public class BookManager { private string dbPath; private SQLiteConnection db; public BookManager() { dbPath = DatabseFileAccess.GetLocalFilePath("db_GanjinehApp.db3"); var paltform = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid(); db = new SQLiteConnection(paltform, dbPath); db.CreateTable<Book>(); } public List<Book> GetList() { return db.Table<Book>().ToList(); } public Book GetBookById(int id) { return db.Table<Book>().FirstOrDefault(t => t.Id == id); } public bool InsertBook(Book book) { try { db.Insert(book); return true; } catch (Exception ex) { return false; } } public bool DeleteBook(Book book) { try { db.Delete(book); return true; } catch (Exception ex) { return false; } } }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)