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

بستن دیتابیس بعد از اجرای متد checkdb

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

سلام

در کلاس دیتابیس وقتی می خواهیم چک کنیم که ایا دیتابیس قابل استفاده هست یا نه از همچین متدی استفاده می کنم

     public boolean checkdb() {

SQLiteDatabase db = null;
try {
db = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READONLY);

}
catch (SQLException e)
{

}
return db != null ? true : false;

}

مساله اینجاست که بعد از اجرای این متد دیتابیس باز می مونه  چطور می تونم دیتابیس رو بعد از چک کردن ببندم؟

نظرات

MeY3am 11 سال پیش
فکرنکنم نیاز به بسته شدن داشته باشه cursor رو فقط باید بست حالا شما از این کد استفاده کنید ()db.close بعدشم اگر قصد بازکردن یا ساختن دیتابیس رو دارید از این کد استفاده کنید openOrCreateDatabase !
hojat_babaie 11 سال پیش
مشکل اینجاست که اگه db بسته بشه اونوقت مقدار false رو برمی گردونه

پاسخ‌ها 2

Spirit 11 سال پیش

این کد رو تست کنید (تو Notepad تغییر دادم)

 public boolean checkdb() {

SQLiteDatabase db = null;
try {
db = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READONLY);
return db != null ? true : false;
}
catch (SQLException e)
{
return false;
}
finally
{
db.close();
}
return false;

}

نظرات

hojat_babaie 11 سال پیش

این کد رو تو برنامه که گزاشتم از return اخریش اشکال گرفت وگفت که باید حذف بشه منم کد رو تغییر دادم:

  public boolean checkdb() {

SQLiteDatabase db = null;
try {
db = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READONLY);
return db != null ? true : false;
}
catch (SQLException e)
{
return false;
} finally
{
db.close();
}

}

در صورتی که دیتابیس کپی شده باشه روی حافظه وفقط بخواد خونده بشه این کد کار می کنه-دیتابیس رو می بنده- اما اگه بخوام در اولین اجرا دیتابیس رو روی حافظه کپی کنم برنامه کرش می کنه_از db.close(); اشکال می گیره_در ضمن من از این متد دریک متد دیگه استفاده کردم_متد زیر_برای کپی دیتابیس در صورتی که کپی نشده باشه :

    public void useable() {

boolean checkdb = checkdb();

if (checkdb) {
Log.i("LOG", "check tru");
} else {

this.getReadableDatabase();

try {

copydatabase();

}
catch (IOException e) {

}

}

}

کد های ارور برنامه:

نظرات


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