کار با دیتابیس آماده در اندروید

گزارش
سوال

لطفا علت گزارش خود را توضیح دهید.

گزارش لغو

سلام و خداقوت خدمت دوستان عزیز
بنده از دیتابیس آماده استفاده میکنم و برای این کار کتابخونه SQLiteAssetsHelper رو هم اضافه کردم…
بعد کدهام رو نوشتم ولی برنمه کرش میکنه و نمیتونه دیتابیسم رو باز کنه…
علتش چیه؟

کد:
public class MyDatabase extends SQLiteAssetHelper {

public static final String DB_NAME = \\\”Testdb\\\”;
public static final int DB_VERSION = 1;

Context context;

public MyDatabase(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.context = context;
}

public Cursor getInfo() {
String QUERY = \\\”SELECT * FROM fieldSelect\\\”;
SQLiteDatabase sqLiteDatabase = this.getReadableDatabase();
return sqLiteDatabase.rawQuery(QUERY, null);
}
}

به این خط گیر میده:
SQLiteDatabase sqLiteDatabase = this.getReadableDatabase();

خطایی که Log میکنه بصورت زیره:
Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database

حل شده 1
اندروید - android 20 پاسخ 1263 بازدید 0

درباره نویسنده

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

پاسخ ها ( ۲۰ )

  1. محمد حسین جعفری پور
    1
    ۹, خرداد , ۱۳۹۷ در ۸:۳۱ ب.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    سلام و درود در آموزش های Sqlite سایت تمامی بخش استفاده شده است مشکل کد بالا در getReadableDatabase است باید با getWritable جایگزین شود و دقت کنید باید در هربار تغییر در فیلد های دیتابیس برنامه رو پاک کنید دوباره نصب کنید یا دیتابیس رو version بزنید.

    آموزش های Sqlite سایت

    http://programchi.ir/?s=sqlite

    موفق و پیروز باشید..

    بهترین پاسخ
  2. ehsan.k
    0
    ۱۲, خرداد , ۱۳۹۷ در ۲:۱۸ ب.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    ممنون از راهنماییتون
    ولی چرا برای خوندن از دیتابیس باید حالت نوشتن داخل دیتابیس رو فعال کرد؟

    • محمد حسین جعفری پور
      1
      ۱۳, خرداد , ۱۳۹۷ در ۴:۳۰ ب.ظ

      لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

      گزارش لغو

      سلام نیازی نیست حتما فعال شود در برخی موارد دیده شده خطا پیش می آید البته درست می فرمایید باید حالت بروی getreadable قرار گیرد.

  3. ehsan.k
    0
    ۱۲, خرداد , ۱۳۹۷ در ۲:۲۴ ب.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

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

  4. ehsan.k
    0
    ۱۳, خرداد , ۱۳۹۷ در ۶:۰۱ ب.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    بسیار ممنون از راهنماییاتون
    نمیشه بجای like بیایم از دستور کوئری: SELECT * FROM
    استفاده کنیم و بعد ازینکه کل جدول رو فراخوندیم و داخل cursor ریختیم، بعد بیایم با یه حلقه for همون دیتاهایی که ازش میخوایم رو برداریم؟؟؟

    • محمد حسین جعفری پور
      0
      ۱۴, خرداد , ۱۳۹۷ در ۳:۳۸ ب.ظ

      لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

      گزارش لغو

      سلام اینم میشه ولی سرعت دستور Select به آن شکل خیلی کند است و حتی for نیز کند است شما بهترین راه استفاده از دستور like است.

      موفق و موید باشید.

  5. ehsan.k
    0
    ۱۵, خرداد , ۱۳۹۷ در ۱۱:۰۳ ب.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    بنده از دستور زیر استفاده کردم ولی متد query رو نمیشناسه…
    باید چکار کنم؟
    و اینکه مقدار برگشتی این تابع در واقع چیه؟

  6. ehsan.k
    0
    ۱۶, خرداد , ۱۳۹۷ در ۱۲:۰۵ ق.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    جناب مهندس اصلا متوجه نمونه کدی که داخل آموزش دستور like دادین نمیشم…
    مگه دستورات کوئری رو با حروف بزرگ نمینویسن…؟
    و اینکه چطور زمانی که ستونی از جدول رو بصورت name.lenght() تعریف میکنین… چون برنامه از من میخواد که ببینه مقدار این متغیر چیه که باید ببینه مقدار داره یا نه…
    میشه کمی توضیح بدین؟

    • محمد حسین جعفری پور
      0
      ۱۶, خرداد , ۱۳۹۷ در ۳:۴۶ ب.ظ

      لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

      گزارش لغو

      سلام لازم نیست حتما دستور query به شکل بزرگ نوشته شده باشد ولی یا همه رو بزرگ می نویسن یا همه رو کوچک
      شما اگر می خواهید مقدارش رو بگیرید باید قبلش یک select بزنید سپس در cursor مقدار آن را چک کنید و به گونه ای دو کوئری باید زده شود و متوجه منظورتان نشدم.

  7. ehsan.k
    0
    ۱۶, خرداد , ۱۳۹۷ در ۱:۴۶ ب.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    یه نمونه دستور دیگه هم زدم ولی فایده ای نداشت:

    cursor = sqLiteDatabase.rawQuery(“SELECT * FROM university WHERE name LIKE”+”%”+edtNameUni+”%”, null);

    و خطای زیرو میداد:

    Caused By : SQL(query) error or missing database.
    (near “%”: syntax error (code 1): , while compiling: SELECT * FROM university WHERE name LIKE%android.support.v7.widget.AppCompatEditText{1f8a0a7d VFED..CL .F…… 12,12-430,73 #7f080059 app:id/edtUni}%)

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

    ممنون از راهنماییاتون

  8. ehsan.k
    0
    ۲۰, خرداد , ۱۳۹۷ در ۷:۲۱ ق.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    بله ممنون
    مشکل برطرف شد و از دستور like استفاده نکردم
    ممنون از راهنماییتون

  9. ehsan.k
    0
    ۲۳, خرداد , ۱۳۹۷ در ۸:۳۱ ق.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    سلام مهندس جعفری گرامی
    بنده دستورات مربوط به ارتباط و گرفتن اطلاعات از دیتابیسم رو تو پروژه جدید کپی کردم ولی متاسفانه میگه دیتابیست وجود نداره، در حالیکه هیچ تفاوتی با برنامه قبلی نداره…
    زمانی کد رو getReadable() مینویسم خطای زیر رو میده:
    Caused By : Specified directory or database file does not exist.
    (unknown error (code 1294): Could not open database)
    که میکه دیتابیس موجود نیست…

    و ز مانی که کد رو با getWrightable() مینویسم خطای زیر رو میده:
    Caused by: com.readystatesoftware.sqliteasset.SQLiteAssetException: Missing databases/MyData.db.zip file in assets or target folder not writable
    که میگه قابلیت نوشتن وجود نداره…

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

  10. ehsan.k
    0
    ۲۳, خرداد , ۱۳۹۷ در ۹:۱۱ ق.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    آیا علت نشناختن دیتابیس میتونه کپی کردن دستورات باشه؟
    (ولی به نظرم نباید به این موضوع ربطی داشته باشه)

  11. ehsan.k
    0
    ۲۳, خرداد , ۱۳۹۷ در ۹:۱۸ ق.ظ

    لطفا علت گزارش خود را در رابطه با این پاسخ بنویسید.

    گزارش لغو

    درست شد
    ممنون از آموزش های خوبق و دقیقتون
    بیگ لایک هم کمه برای شما و سایتتون….. 🙂

ارسال نظر