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

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

مدیریت گفتگو
underomeda 12 سال پیش
آخرین تغییر: 12 سال پیش

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

نظرات

Mseif 12 سال پیش
توی دیتابیس مگه ذخیره نمیکنید ؟
SaLaH KuRD 12 سال پیش
سلام به احتمال زیاد مشکل اینه که شما کپی دیتابیس رو به SDCARD درست ننوشتید و هر بار که Porcess برنامه بسته میشه دوباره دیتابیس توی SDCARD کپی میشه و در نتیجه like از بین میره ، باید توی کلاس کپی فایل تعیین کنی که اگه این دیتابیس قبلا وجود داشت اون رو کپی نکن.

پاسخ‌ها 5

سامان پاپی 12 سال پیش

این لینک زیر رو دان کن یه پروژه کتاب که میتوی توش به علاقه مندی هات اضافه کنی داخلش یه کلاس هست به نام 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();
}

نظرات

underomeda 12 سال پیش
این لینکه اصلا کار نمیکنه
underomeda 12 سال پیش
این لینکه اصلا کار نمیکنه
underomeda 12 سال پیش
این کدت از نظر من اشتباه اس چون اصلا از asset کپی نمیکنه دیتا بیس رو
underomeda 12 سال پیش
آقای محترم من میخوام دیتا بیس رو از پوشی asset کپی کنم روی sd card حالا فهمیدی؟
underomeda 12 سال پیش
آقای محترم من میخوام دیتا بیس رو از پوشی asset کپی کنم روی sd card حالا فهمیدی؟
Eminent 12 سال پیش

سلام. دوست عزیزم از اینجا این کلاس رو دانلود کن لینک فایل و بعد اینکه به پروژه ات اضافه کردی. توسط دستور زیر ازش استفاده کن هر فایلی رو میتونه به 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();
        }

 

نظرات

underomeda 12 سال پیش
دوست عزیز ممنون من اینارو دارم مشکل اینا هر بار برنامه اجرا میشه دیتا بیس دوباره کپی میشه میخوام یک بار کپی بشه چطوری بررسی کنم که اگه کپی شده دیگه کپی نشه
Eminent 12 سال پیش
آهان فهمیدم استاد یه بار گفتن منم الان دقیقا یادم نیس ولی میگردم به محض اینکه پیدا کنم میگم.
Eminent 12 سال پیش

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

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

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

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

نظرات

SaLaH KuRD 12 سال پیش

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


if (!database.exists()) {
// Database does not exist so copy it from assets here
Log.i("Database", "Not Found");
} else {
Log.i("Database", "Found");
}

نظرات

Eminent 12 سال پیش
الان این کد که گفتید کل sdcard رو بررسی میکنه ؟ یعنی نیازی نیس آدرس خاصی رو بدیم بگرده ؟
underomeda 12 سال پیش
صلاح جان این کد عملی نیست چون هیچ فایلی رو چک نمیکنه
Eminent 12 سال پیش

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

        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();
            }

        }

نظرات

jamal2012 12 سال پیش
اینو استاد تو کدوم اموزش ها گفته بود؟

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