بروزرسانی برنامه بدون پاک شدن اطلاعاتsqlite (لطفا جواب دهید)
سلام
با نصب ورژن جدید برنامه اطلاعات قبلی که کاربر در sqlite وارد کرده پاک نشوند اگر میشه لینک بذارید ممنون
اگر همون keystore رو استفاده کنید که کاربر مجبور نشه برنامه رو برای آپدیت کردن پاک کنه دیتابیس سر جاش میمونه. اگر میخواهید حتی بعد از پاک کردن هم دادهها باقی بمونن محل ذخیره دیتابیس رو منتقل کنید به جایی از کارت حافطه که مربوط به برنامه نیست
String DIR_DATABASE = DIR_SDCARD + "/Android/data/" + getPackageName(); //in alan age barnmae pak she database ham pak mishe
String DIR_DATABASE = DIR_SDCARD + "/MyAppData/"; //in vali ba pak shodane barname ham mimoone(ke albate khoob nist be nazare man)
نهایتا اینکه موقع ساختن دیتابیس حتما اینجوری بنویسید: CREATE TABLE IF NOT EXISTS
من در ورژن جدید برنامه ام یه جدول به دیتابیس sqlite اضافه کردم وقتی کاربر برنامه رو بروزرسانی می کند اطلاعات قبلی که وارد کرده پاک نمی شوند اما جدول جدید به دیتابیس اضافه نمی شود فکر کنم باید از متد onUpgrade استفاده کنم اما نمیدونم چطور ورژن جدید با ورژن قبلی دیتابیس رو چک کنم و متد onUpgrade کجا صدا بزنم.
یا اگر اسم دیتابیس توی ورژن جدید برنامه تغییر دهم جدول جدید وجود دارد ولی اطلاعات کاربر از داخل sqlite پاک می شوند
How do I add or delete columns from an existing table in SQLite.
SQLite has limited ALTER TABLE support that you can use to add a column to the end of a table or to change the name of a table. If you want to make more complex changes in the structure of a table, you will have to recreate the table. You can save existing data to a temporary table, drop the old table, create the new table, then copy the data back in from the temporary table.
For example, suppose you have a table named "t1" with columns names "a", "b", and "c" and that you want to delete column "c" from this table. The following steps illustrate how this could be done:
BEGIN TRANSACTION; CREATE TEMPORARY TABLE t1_backup(a,b); INSERT INTO t1_backup SELECT a,b FROM t1; DROP TABLE t1; CREATE TABLE t1(a,b); INSERT INTO t1 SELECT a,b FROM t1_backup; DROP TABLE t1_backup; COMMIT;
متوجه نشدم میشه بیشتر توضیح دهید
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .