如何编写可复用code为数据库中的Andr​​oid [英] How to write reusable code for Database in Android

查看:121
本文介绍了如何编写可复用code为数据库中的Andr​​oid的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我应该怎样写可重复使用的$ C $数据库c。在安卓。我应该遵循什么模式或体系结构?

解决方案

 步骤1:总是不同的封装应用,例如(com.appname.db)。
        第2步:在其上创建DBHelpar类,并把所有方法涉及数据库就可以了,。
        第3步:这是所有的常用方法。

我贴code,供您参考


包com.androidhive.androidsqlite;

进口的java.util.ArrayList;
进口的java.util.List;

进口android.content.ContentValues​​;
进口android.content.Context;
进口android.database.Cursor;
进口android.database.sqlite.SQLiteDatabase;
进口android.database.sqlite.SQLiteOpenHelper;

公共类数据库处理器扩展SQLiteOpenHelper {

    //所有静态变量
    //数据库版本
    私有静态最终诠释DATABASE_VERSION = 1;

    //数据库名称
    私有静态最后弦乐DATABASE_NAME =contactsManager;

    //联系方式表名
    私有静态最后弦乐TABLE_CONTACTS =人脉;

    //联系方式表列名
    私有静态最后弦乐KEY_ID =ID;
    私有静态最后弦乐KEY_NAME =名;
    私有静态最后弦乐KEY_PH_NO =PHONE_NUMBER;

    公共数据库处理器(上下文的背景下){
        超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
    }

    //创建表
    @覆盖
    公共无效的onCreate(SQLiteDatabase DB){
        字符串CREATE_CONTACTS_TABLE =CREATE TABLE+ TABLE_CONTACTS +(
                + KEY_ID +INTEGER PRIMARY KEY,+ KEY_NAME +TEXT
                + KEY_PH_NO +TEXT+);
        db.execSQL(CREATE_CONTACTS_TABLE);
    }

    //升级数据库
    @覆盖
    公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
        如果存在//删除旧的表
        db.execSQL(DROP TABLE IF EXISTS+ TABLE_CONTACTS);

        //再次创建表
        的onCreate(DB);
    }

    / **
     *所有CRUD(创建,读取,更新,删除)操作
     * /

    //添加新联系人
    无效的addContact(联系方式联系我们){
        SQLiteDatabase DB = this.getWritableDatabase();

        ContentValues​​值=新ContentValues​​();
        values​​.put(KEY_NAME,contact.getName()); // 联系人姓名
        values​​.put(KEY_PH_NO,contact.getPhoneNumber()); //联系电话

        //插入行
        db.insert(TABLE_CONTACTS,空,价值观);
        db.close(); //闭幕数据库连接
    }

    //获取单触点
    联系getContact(INT ID){
        SQLiteDatabase DB = this.getReadableDatabase();

        光标光标= db.query(TABLE_CONTACTS,新的String [] {KEY_ID,
                KEY_NAME,KEY_PH_NO},KEY_ID +=?,
                新的String [] {将String.valueOf(ID)},NULL,NULL,NULL,NULL);
        如果(光标!= NULL)
            cursor.moveToFirst();

        联系方式联系我们=新的联系方式(的Integer.parseInt(cursor.getString(0)),
                cursor.getString(1),cursor.getString(2));
        //返回接触
        返回接触;
    }

    //获取所有联系人
    公开名单<联系与GT; getAllContacts(){
        名单<联系与GT; contactList =新的ArrayList<联系与GT;();
        //选择所有查询
        字符串selectQuery =SELECT * FROM+ TABLE_CONTACTS;

        SQLiteDatabase DB = this.getWritableDatabase();
        光标光标= db.rawQuery(selectQuery,NULL);

        //遍历所有行和添加到列表
        如果(cursor.moveToFirst()){
            做 {
                联系方式联系我们=新联系();
                contact.setID(的Integer.parseInt(cursor.getString(0)));
                contact.setName(cursor.getString(1));
                contact.setPhoneNumber(cursor.getString(2));
                //添加联系人列出
                contactList.add(接触);
            }而(cursor.moveToNext());
        }

        //返回联系人列表
        返回contactList;
    }

    //更新单触点
    公众诠释updateContact(联系方式联系我们){
        SQLiteDatabase DB = this.getWritableDatabase();

        ContentValues​​值=新ContentValues​​();
        values​​.put(KEY_NAME,contact.getName());
        values​​.put(KEY_PH_NO,contact.getPhoneNumber());

        //更新行
        返回db.update(TABLE_CONTACTS,价值观,KEY_ID +=?,
                新的String [] {将String.valueOf(contact.getID())});
    }

    //删除单个联系人
    公共无效deleteContact(联系方式联系我们){
        SQLiteDatabase DB = this.getWritableDatabase();
        db.delete(TABLE_CONTACTS,KEY_ID +=?,
                新的String [] {将String.valueOf(contact.getID())});
        db.close();
    }


    //获取联系人计数
    公众诠释getContactsCount(){
        字符串countQuery =SELECT * FROM+ TABLE_CONTACTS;
        SQLiteDatabase DB = this.getReadableDatabase();
        光标光标= db.rawQuery(countQuery,NULL);
        cursor.close();

        //返回计数
        返回cursor.getCount();
    }

}
 

我这个,现在你得到了它如何在Android中处理数据库。

How should i write a reusable code in Android for Database. What pattern or architecture should i follow ?

解决方案

Step 1: Make Always different package in Application eg(com.appname.db).
        Step 2: Create DBHelpar Class on it and Put All method relate db on it,.
        Step 3: This is All are Common Method.

i am pasting code for your reference 


package com.androidhive.androidsqlite;

import java.util.ArrayList;
import java.util.List;

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

public class DatabaseHandler extends SQLiteOpenHelper {

    // All Static variables
    // Database Version
    private static final int DATABASE_VERSION = 1;

    // Database Name
    private static final String DATABASE_NAME = "contactsManager";

    // Contacts table name
    private static final String TABLE_CONTACTS = "contacts";

    // Contacts Table Columns names
    private static final String KEY_ID = "id";
    private static final String KEY_NAME = "name";
    private static final String KEY_PH_NO = "phone_number";

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

    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
                + KEY_PH_NO + " TEXT" + ")";
        db.execSQL(CREATE_CONTACTS_TABLE);
    }

    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

        // Create tables again
        onCreate(db);
    }

    /**
     * All CRUD(Create, Read, Update, Delete) Operations
     */

    // Adding new contact
    void addContact(Contact contact) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_NAME, contact.getName()); // Contact Name
        values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone

        // Inserting Row
        db.insert(TABLE_CONTACTS, null, values);
        db.close(); // Closing database connection
    }

    // Getting single contact
    Contact getContact(int id) {
        SQLiteDatabase db = this.getReadableDatabase();

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

        Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
                cursor.getString(1), cursor.getString(2));
        // return contact
        return contact;
    }

    // Getting All Contacts
    public List<Contact> getAllContacts() {
        List<Contact> contactList = new ArrayList<Contact>();
        // Select All Query
        String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Contact contact = new Contact();
                contact.setID(Integer.parseInt(cursor.getString(0)));
                contact.setName(cursor.getString(1));
                contact.setPhoneNumber(cursor.getString(2));
                // Adding contact to list
                contactList.add(contact);
            } while (cursor.moveToNext());
        }

        // return contact list
        return contactList;
    }

    // Updating single contact
    public int updateContact(Contact contact) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_NAME, contact.getName());
        values.put(KEY_PH_NO, contact.getPhoneNumber());

        // updating row
        return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
                new String[] { String.valueOf(contact.getID()) });
    }

    // Deleting single contact
    public void deleteContact(Contact contact) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
                new String[] { String.valueOf(contact.getID()) });
        db.close();
    }


    // Getting contacts Count
    public int getContactsCount() {
        String countQuery = "SELECT  * FROM " + TABLE_CONTACTS;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        cursor.close();

        // return count
        return cursor.getCount();
    }

}

i this now you got it How to handle database in android.

这篇关于如何编写可复用code为数据库中的Andr​​oid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆