بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کپی و آپدیت دیتابیس ( آموزش کامل )

Hajhosseini  11 سال پیش  7 سال پیش
+68 0

تا به امروز، من توی برنامه هام دیتابیس رو کپی میکردم و ازش استفاده میکردم، در آپدیت ها دیتابیس قبلی رو پاک میکردم و دیتابیس جدید رو جایگزین میکردم. اما این روش همیشه جواب نمید!
1 : زمانی که حجم دیتابیس بالا باشه
2 : توی بعضی از گوشی ها دیتابیس قبلی پاک نمیشه، در نتیجه آپدیت دیتابیس با مشکل روبه رو میشه
.
روشی که من پیدا کردم استفاده از SQLiteAssetHelper هست که یک Library کامل برای کپی، آپدیت و ... دیتابیس هست.

در دیتابیس هایی که حجم بالایی دارن یک راه اینه که به فایل های کوچکتر تقسیم بشن که این راه حل من نیست  پس این Library میتونه گزینه خوبی باشه

لینک GitHub  : لینک

طریقه استفاده : sqliteassethelper-2.0.1.jar رو در فولدر libs کپی میکنیم

برای استفاده در API پایین تر از 10 ( طبق مستندات ) باید دیتابیس رو به صورت فایل زیپ قرار بدیم مانند : database.sqlite.zip
بعد کلاس زیر رو میسازیم

 public class DataBaseConnection extends SQLiteAssetHelper {

    private static final String DATABASE_NAME    = "database.sqlite.zip";
    private static final int    DATABASE_VERSION = 1;


    public DataBaseConnection(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
}

خوب تا اینجاشو بلد بودم، ولی دیتابیسم یا خالی کپی میشه یا اصلا کپی نمیشه
ممنون میشم اگر از این Library استفاده کردید یا علامند هستید، این روش رو تست کنید و آموزش رو کامل کنید
اگر هم راه حل دیگه ای با توجه به شرایط میدونید در پاسخ درج کنید

اینم برای ارتباط با دیتابیس

 private DataBaseConnection db = new DataBaseConnection(this);
+1 0
البته قبلا هم معرفی شده بود لینک :) (11 سال پیش)
+1 0
مرسی اسپریت جان، طریقه آپدیت کردن دیتابیس توی اون تاپیک نبود. ممنون میشم اونو به عنوان پاسخ درج کنید (11 سال پیش)
 برای این سوال 22 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
SeyyedH  9 سال پیش
0 0

من این کارهایی که گفتین انجام دادم اما با اررور زیر مواجه شدم

android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database

که از خط زیر گرفته میشد :

final SQLiteDatabase database = db.getReadableDatabase();

آیا به جز کارهایی گفتین کار دیگه ای باید انجام بشه؟ مثل تعریف کردن کلاس G یا .... چون به چیز دیگه ای اشاره نفرمودین

0 0
فایل دیتابیست روهم بزار داخل asset پوشه database . اگر همه کارها رو کردی باید جواب بدهد (9 سال پیش)
+1 0
من document خودش رو تو سایت github خوندم نوشته بود توی فولدری به نام databases باید باشه، انجام دادم و نتیجه هم داد (9 سال پیش)
0 0
من داخل همین پوشه databases گذاشتم. هم زیپ کردم نشد، و هم بدون زیپ گذاشتم و بازم نشد. هم اسمشو با پسوند گذاشتم (یعنی databa.db) نشد و هم بدون پسوند که بازم نشد. (7 سال پیش)
پاسخ به سوال 
شهریاری 2  7 سال پیش
0 0

دوستان بنده همه کارهایی گفتید رو انجام دادم، اما این ارور رو میده. من داخل همین پوشه databases گذاشتم. هم زیپ کردم نشد، و هم بدون زیپ گذاشتم و بازم نشد. هم اسمشو با پسوند گذاشتم (یعنی databa.db) نشد و هم بدون پسوند که بازم نشد. اینم خطاش. اسم دیتابیس رو گذاشتم tasnim2:

 01-31 21:09:33.877 9928-9928/rasadev.ir.tasnim E/SQLiteLog: (14) cannot open file at line 30052 of [b3bb660af9]
01-31 21:09:33.877 9928-9928/rasadev.ir.tasnim E/SQLiteLog: (14) os_unix.c:30052: (2) open(/data/data/rasadev.ir.tasnim/databases/tasnim2) -
01-31 21:09:33.879 9928-9928/rasadev.ir.tasnim E/SQLiteLog: (14) cannot open file at line 30052 of [b3bb660af9]
01-31 21:09:33.879 9928-9928/rasadev.ir.tasnim E/SQLiteLog: (14) os_unix.c:30052: (2) open(/data/data/rasadev.ir.tasnim/databases/tasnim2)


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