使用Loader访问DataBase

时间:2017-06-20 07:22:59

标签: java android

我已经创建了一个本地数据库。我使用不同的方法访问它但我认为CursorLoader是访问它的有效方法。但我不知道怎么做。可以有人帮忙吗?这是我的代码

 public class DatabaseHandler extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "Dispalymanager";
    private static final String TABLE = "contacts";
    private static final String KEY_ID = "id";
    private static final String KEY_NAME = "name";
    private static final String KEY_AGE = "age";

    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_TABLE = "CREATE TABLE " + TABLE + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_AGE + " TEXT" + ")";
        db.execSQL(CREATE_TABLE);

    }

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

    }

    void addInfo(Info info) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(KEY_NAME, info.getName());
        values.put(KEY_AGE, info.getAge());
        db.insert(TABLE, null, values);
        db.close();
    }

    Info getinfo(int id) {
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE, new String[]{KEY_ID, KEY_NAME, KEY_AGE}, KEY_ID + "=?",
                new String[]{String.valueOf(id)}, null, null, null, null);
        if (cursor != null)
            cursor.moveToFirst();

        Info info = new Info(Integer.parseInt(cursor.getString(0)),
                cursor.getString(1), cursor.getString(2));
        return info;
    }

    public List<Info> getAllInfo() {
        List<Info> infoList = new ArrayList<Info>();

        String selectQuery = "SELECT  * FROM " + TABLE;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        if (cursor.moveToFirst()) {
            do {
                Info contact = new Info();
                contact.setID(Integer.parseInt(cursor.getString(0)));
                contact.setName(cursor.getString(1));
                contact.setPhoneNumber(cursor.getString(2));
                infoList.add(contact);
            } while (cursor.moveToNext());
        }

        return infoList;
    }

    public int updateInfo(Info info) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_NAME, info.getName());
        values.put(KEY_AGE, info.getAge());


        return db.update(TABLE, values, KEY_ID + " = ?", new String[]{String.valueOf(info.getID())});
    }

    public void deleteInfo(Info contact) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE, KEY_NAME + " = ?", new String[]{String.valueOf(contact.getName())});
        db.close();
    }


    public int getInfoCount() {
        String countQuery = "SELECT  * FROM " + TABLE;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        int count = cursor.getCount();
        cursor.close();


        return count;
    }

    boolean deleteitem(int id){

        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("delete from "+TABLE+" where "+KEY_ID+" ="+id);

        return  true;

    }

}

数据库处理器

{{1}}

0 个答案:

没有答案