آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

بروزرسانی برنامه بدون پاک شدن اطلاعاتsqlite (لطفا جواب دهید)

fatemeh  10 سال پیش  10 سال پیش
+2 0

سلام

با نصب ورژن جدید برنامه  اطلاعات قبلی که کاربر در sqlite وارد کرده پاک نشوند اگر میشه لینک بذارید ممنون

 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
Rabbit  10 سال پیش
+2 0

اگر همون 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

0 0
کاملا درست و واضح (10 سال پیش)
پاسخ به سوال 
fatemeh  10 سال پیش
0 0

من در ورژن جدید برنامه ام یه جدول به دیتابیس sqlite اضافه کردم وقتی کاربر برنامه رو بروزرسانی می کند اطلاعات قبلی که وارد کرده پاک نمی شوند اما جدول جدید به دیتابیس اضافه نمی شود  فکر کنم باید از متد onUpgrade استفاده کنم اما نمیدونم چطور ورژن جدید با ورژن قبلی دیتابیس رو چک کنم و متد onUpgrade کجا صدا بزنم.

یا اگر اسم دیتابیس  توی ورژن جدید برنامه تغییر دهم جدول جدید وجود دارد ولی اطلاعات کاربر از داخل sqlite پاک می شوند

پاسخ به سوال 
Rabbit  10 سال پیش
0 0

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;
پاسخ به سوال 
fatemeh  10 سال پیش
0 0

متوجه نشدم میشه بیشتر توضیح دهید

0 0
شما میخواید table جدید اضافه کنید یا به table قبلی یک ستون جدید اضافه کنید؟ این کدی که من گذاشتم برای اضافه کردن ستون جدید هست. کاری که میکنه اینه که table شما رو ذخیره میکنه و بعد drop میکنه، سپس یک table جدید میسازه که ستونی که میخواستیم اضافه کنیم رو هم داره. نهایتا مقادیر رو در جدول جدید کپی میکنه. همین کد رو کپی کنید فقط اسامی رو تغییر بدید. اما اگر میخواهید table جدید بسازید که اصلا نیاز به کد خاصی نیست. همونجا که table قبلی رو تعریف کردید اینم تعریف کنید و همون کارهارو بکنید. بدون استفاده از متد upgrade میتونید این کارو کنید. کار آپگرید این هست که table قبلی رو drop میکنه و یک table جدید به همون اسم با ورژن بالاتر میسازه(که شما نیاز ندارید)، برای اضافه کردن table باید تو بخش create (حالا هر اسمی که گذاشتید) این کارو انجام بدید. اگر بلد نیستید این لینک به شما کمک میکنه. (10 سال پیش)
0 0
من دیتابیسم رو از داخل assets کپی میکنم از دستور تعریف table استفاده نمی کنم جدول جدیدی که میخوام اضافه کنم دارای محتوا است با این روش میشه؟ (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .