رفتن به مطلب
  • 0

استفاده از دیتابیس در پروژه


Salar82

سوال

سلام به همه دوستان

اخیرا یه مشکلی برای من پیش اومده، اینکه هرچی دیتابیسم رو به حافظه اپ کپی می‌کنم، موقع خوندنش میگه not found :|

از کلاس SQLiteOpenHelper استفاده می‌کنم که متاسفانه به در بسته می‌خورم....

اگر کسی می‌دونه که چطور میشه از این کلاس برای دیتابیس خارجی استفاده کرد، ممنون میشم راهنمایی کنه

:53:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

5 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در ۱۴۰۰/۴/۱۸ در ۱۰:۵۱، Salar۸۲ گفته است:

دیتابیس رو گذاشتم تو assets/databases/test.db

 

منتها از لایبرری که آقای شاهدی گذاشتن و حتی SqliteOpenHelper هم که استفاده می‌کنم هم باز چنین اروری هست. خواستم دستی خودم هم تو /data/data بریزم که بازم همون ارور رو داد

این کلاس رو من برای یکی از پروژه هام استفاده کرد و موردی هم نبوده. ازش استفاده کنید

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.text.TextUtils;

import com.doreshia.app.models.items.OfflineItem;
import java.util.ArrayList;

public class DatabaseHelper extends SQLiteOpenHelper {
    private static String DATABASE_NAME = "offline_db";
    private static final int DATABASE_VERSION = 1;
    private static final String OFFLINE_TBL = "_offline";
    private static final String KEY_ID = "_id";
    private static final String KEY_UNIQUE_ID = "_uniqid";
    private static final String KEY_NAME = "_name";
    private static final String KEY_DIR = "_dir";
    private static final String KEY_COVER = "_cover";
    private static final String KEY_IMAGE="_image";

    private static final String CREATE_TABLE_ALARMS = " CREATE TABLE IF NOT EXISTS "
            + OFFLINE_TBL + " ("
            + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + KEY_UNIQUE_ID + " TEXT, "
            + KEY_NAME + " TEXT, "
            + KEY_IMAGE + " TEXT, "
            + KEY_COVER + " TEXT, "
            + KEY_DIR + " TEXT"
            + " );";
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
   }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL(CREATE_TABLE_ALARMS);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS '" + OFFLINE_TBL + "'");
        onCreate(db);
    }

    public void addItem(OfflineItem item) {
        SQLiteDatabase db = this.getWritableDatabase();
        if (!hasItem(item.uniqid)){
            ContentValues values = new ContentValues();
            values.put(KEY_NAME, item.name);
            values.put(KEY_IMAGE, item.image);
            values.put(KEY_COVER, item.cover_name);
            values.put(KEY_UNIQUE_ID, item.uniqid);
            values.put(KEY_DIR, item.dir);
            db.insert(OFFLINE_TBL, null, values);
        }else {
            String whereClause = KEY_UNIQUE_ID + " =?";
            String[] whereArgs = new String[] { String.valueOf(item.uniqid) };
            ContentValues values = new ContentValues();
            values.put(KEY_NAME, item.name);
            values.put(KEY_IMAGE, item.image);
            values.put(KEY_COVER, item.cover_name);
            values.put(KEY_DIR, item.dir);
            db.update(OFFLINE_TBL, values, whereClause,whereArgs);;
        }
    }
    public boolean hasItem(String uniqid) {
        SQLiteDatabase db = this.getWritableDatabase();
        if (uniqid==null)return false;
        String selectString = "SELECT * FROM " + OFFLINE_TBL + " WHERE " + KEY_UNIQUE_ID + " =?";
        Cursor cursor = db.rawQuery(selectString, new String[] {uniqid});
        boolean hasObject = false;
        if(cursor.moveToFirst()){
            hasObject = true;
        }
        cursor.close();
        return hasObject;
    }
    public void deleteItem(String uniqid){
        SQLiteDatabase db = this.getWritableDatabase();
        String whereClause = KEY_UNIQUE_ID + " =?";
        String[] whereArgs = new String[] { String.valueOf(uniqid) };
        db.delete(OFFLINE_TBL, whereClause, whereArgs);
    }
    public void deleteAllItem(){
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("DELETE FROM "+ OFFLINE_TBL);
    }
    public ArrayList<OfflineItem> getItems(String cover_id) {
        SQLiteDatabase db = this.getWritableDatabase();
        String selectString ;
        String[] condition;
        if (TextUtils.isEmpty(cover_id)){
            selectString = "SELECT * FROM " + OFFLINE_TBL;
            condition=new String[] {};
        }else {
            selectString = "SELECT * FROM " + OFFLINE_TBL+ " WHERE " + KEY_COVER + " =?";
            condition=new String[] {cover_id};
        }
        ArrayList<OfflineItem> items=new ArrayList<>();
        Cursor c = db.rawQuery(selectString,condition );
        if (c.moveToFirst()){
            while (!c.isAfterLast()) {
                String name = c.getString(c.getColumnIndex(KEY_NAME));
                String image = c.getString(c.getColumnIndex(KEY_IMAGE));
                String cover = c.getString(c.getColumnIndex(KEY_COVER));
                String dir = c.getString(c.getColumnIndex(KEY_DIR));
                String uniqid = c.getString(c.getColumnIndex(KEY_UNIQUE_ID));
                OfflineItem offlineItem=new OfflineItem();
                offlineItem.name=name;
                offlineItem.image=image;
                offlineItem.cover_name=cover;
                offlineItem.uniqid=uniqid;
                offlineItem.dir=dir;
                items.add(offlineItem);
                c.moveToNext();
            }
        }
        c.close();
        return items;
    }
}

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوستان متاسفانه طبق آموزش @ امین شاهدی هم مشکل برطرف نشد :(

ارور No such file or directory رو میده. متاسفانه دلیلش رو هم متوجه نمیشم.

کسی می‌تونه مشکل رو حدس بزنه؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۴/۱۸ در ۰۱:۰۲، Salar۸۲ گفته است:

دوستان متاسفانه طبق آموزش @ امین شاهدی هم مشکل برطرف نشد :(

ارور No such file or directory رو میده. متاسفانه دلیلش رو هم متوجه نمیشم.

کسی می‌تونه مشکل رو حدس بزنه؟

سلام. فایل دیتابیستون کجا ذخیره میشه؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۴/۱۸ در 10:26، محمدرضا شاهپیری گفته است:

سلام. فایل دیتابیستون کجا ذخیره میشه؟

دیتابیس رو گذاشتم تو assets/databases/test.db

 

منتها از لایبرری که آقای شاهدی گذاشتن و حتی SqliteOpenHelper هم که استفاده می‌کنم هم باز چنین اروری هست. خواستم دستی خودم هم تو /data/data بریزم که بازم همون ارور رو داد

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...