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

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

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

سلام

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

     public boolean checkdb() {

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

}
catch (SQLException e)
{

}
return db != null ? true : false;

}

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

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

این کد رو تست کنید (تو 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 سال پیش
0 0

این کد رو تو برنامه که گزاشتم از 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) {

}

}

}

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


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