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

پاک شدن لیست علاقه ها با خاموش کردن گوشی

underomeda  11 سال پیش  11 سال پیش
0 0

من توی دیتا بیس یه فیلد به نام like دارم وقتی 1 میشه یه ایتم به علاقه مندی ها اضافه میشه مشکل اینجاست با خاموش کردن گوشی لیست علاق ها پاک میشه راه حل چیه؟ممنون میشم راهنمایی کنی.

+1 0
توی دیتابیس مگه ذخیره نمیکنید ؟ (11 سال پیش)
+1 0
سلام به احتمال زیاد مشکل اینه که شما کپی دیتابیس رو به SDCARD درست ننوشتید و هر بار که Porcess برنامه بسته میشه دوباره دیتابیس توی SDCARD کپی میشه و در نتیجه like از بین میره ، باید توی کلاس کپی فایل تعیین کنی که اگه این دیتابیس قبلا وجود داشت اون رو کپی نکن. (11 سال پیش)
 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
سامان پاپی  11 سال پیش
0 0

این لینک زیر رو دان کن یه پروژه کتاب که میتوی توش به علاقه مندی هات اضافه کنی داخلش یه کلاس هست به نام database توی اون کدهایی هست که از کد هایی که زیر نوشتم کاملتره میتونی خودت بری با ازمون و خطا با اون کار کنی و درست هم کار میکنی برو با کد های دیتا بیس خودت مقایسه کن مشکل رو پیدا کن  dataofstorys اسم دیتا بیس منه که تو استس هم هست datastorys هم اسم تیبل منه . موفق باشی

http://www.uploadbaz.com/y0sbdgjf4dvv

     public void useable() {
boolean checkdb = checkdb();
if (checkdb) {

} else {
this.getReadableDatabase();
try {
copydatabase();
}
catch (IOException e) {

}
}
}
//-------------------------------------------------
public boolean checkdb() {
SQLiteDatabase db = null;
try {
db = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READONLY);
}
catch (SQLException e) {

}
return db != null ? true : false;
}

//------------------------------------------------------

public void copydatabase() throws IOException {

OutputStream myOutput = new FileOutputStream(path + Name);
byte[] buffer = new byte[1024];
int lenght;
InputStream myInput = mycontext.getAssets().open(Name);
while ((lenght = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, lenght);
}
myInput.close();
myOutput.flush();
myOutput.close();
}
0 0
حل نشد. (11 سال پیش)
0 0
پاسخ ویرایش شد .! (11 سال پیش)
+1 0
این لینکه اصلا کار نمیکنه (11 سال پیش)
+1 0
این لینکه اصلا کار نمیکنه (11 سال پیش)
+1 0
این کدت از نظر من اشتباه اس چون اصلا از asset کپی نمیکنه دیتا بیس رو (11 سال پیش)
0 0
من که نفهمیدم چی گفتی !!!!!!! (11 سال پیش)
+1 0
آقای محترم من میخوام دیتا بیس رو از پوشی asset کپی کنم روی sd card حالا فهمیدی؟ (11 سال پیش)
+1 0
آقای محترم من میخوام دیتا بیس رو از پوشی asset کپی کنم روی sd card حالا فهمیدی؟ (11 سال پیش)
پاسخ به سوال 
Eminent  11 سال پیش
0 0

سلام. دوست عزیزم از اینجا این کلاس رو دانلود کن لینک فایل و بعد اینکه به پروژه ات اضافه کردی. توسط دستور زیر ازش استفاده کن هر فایلی رو میتونه به sdcard کپی کنه...

 AssetManager assetManager = G.context.getAssets();
        InputStream inputStream;
        try {
            inputStream = assetManager.open("database_test.sqlite");
            HelperIO.copyFile(inputStream, G.DIR_DATABAES + "/copyDB.sqlite");
        }
        catch (IOException e) {
            e.printStackTrace();
        }

 

+1 0
دوست عزیز ممنون من اینارو دارم مشکل اینا هر بار برنامه اجرا میشه دیتا بیس دوباره کپی میشه میخوام یک بار کپی بشه چطوری بررسی کنم که اگه کپی شده دیگه کپی نشه (11 سال پیش)
+1 0
آهان فهمیدم استاد یه بار گفتن منم الان دقیقا یادم نیس ولی میگردم به محض اینکه پیدا کنم میگم. (11 سال پیش)
0 0
مرسی (11 سال پیش)
پاسخ به سوال 
Eminent  11 سال پیش
0 0

دوست عزیز من روشی رو واسه دیتابیس ندونستم اما یه روش به ذهنم رسید که جواب میده...

بیا بار اول که یه دایرکتوری ایجاد میکنی و توش دیتابیس کپی میشه بیا مانند کد زیر عمل کن :

ما اینجا گفتیم که اگه دایرکتوری دیتابیس وجود نداشت بنابراین اگه دایرکتوریش نباشه 100 درصد دیتابیس هم نیستش اما در صورتی که بود دیگه دستور کپی کار نمیکنه. امیدوارم متوجه شده باشی. اما تنها ایراد این روش اینه که اگه کاربر خودش بره دستی از داخل پوشه فقط فایل دیتابیس رو حذف کنه دیگه جواب نمیده دیگه چون برنامه میبینه دایرکتوری وجود داره و فکر میکنه دیتابیس هم وجود داره.

            File file = new File(G.DIR_DATABAES);
            if(!file.exists()){
            HelperIO.copyFile(inputStream, G.DIR_DATABAES + "/copyDB.sqlite");
            }

پاسخ به سوال 
SaLaH KuRD  11 سال پیش
+2 0

سلام از این دستور برای بررسی وجود دیتابیس استفاده کنید :


if (!database.exists()) {
// Database does not exist so copy it from assets here
Log.i("Database", "Not Found");
} else {
Log.i("Database", "Found");
}
+1 0
الان این کد که گفتید کل sdcard رو بررسی میکنه ؟ یعنی نیازی نیس آدرس خاصی رو بدیم بگرده ؟ (11 سال پیش)
0 0
صلاح جان این کد عملی نیست چون هیچ فایلی رو چک نمیکنه (11 سال پیش)
پاسخ به سوال 
Eminent  11 سال پیش
0 0

دوستم شرمنده دیر شد ولی خب خودمم چون نیاز داشتم گشتم و تست هم کردم جواب داد :

        String dir = G.DIR_DATABASE + "/mashahir_database.sqlite";
        File f = new File(dir);
        if (f.exists()) {
            Log.i("LOG", "YES");
        } else {
            Log.i("LOG", "NO");
            AssetManager assetManager = G.context.getAssets();
            InputStream inputStream;
            try {
                inputStream = assetManager.open("dir_database/mashahir_database.sqlite");
                HelperIO.copyFile(inputStream, G.DIR_DATABASE + "/mashahir_database.sqlite");
            }
            catch (IOException e) {
                e.printStackTrace();
            }

        }
0 0
اینو استاد تو کدوم اموزش ها گفته بود؟ (11 سال پیش)

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