مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

peymanfilm

عضویت از 1392/09/29

فایل دیتابیس

  • شنبه 30 اردیبهشت 1396
  • 14:23
تشکر میکنم

من یک فایل دیتابیس درون پوشه 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;
            }
        }
    }

پاسخ های این پرسش

تعداد پاسخ ها : 0 پاسخ
در حال حاضر هیچ پاسخی ارسال نشده است
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)