статический класс базы данных для использования с любой деятельностью - PullRequest
1 голос
/ 05 января 2010

Я новичок в Android и еще не разработал ни одного приложения для баз данных на Android. Итак, у меня есть несколько основных вопросов. Мне нужен хороший пример класса базы данных, который позволит мне запускать операции CRUD. Я хотел бы использовать его в качестве статического класса, например:

clsDB->Select("select * from clients");

или

objClient->Delete(clientid);

Мне интересно, может ли кто-нибудь поделиться своими классами базы данных, если больше людей поделятся лучшим Кроме того, я имею в виду, чтобы использовать этот класс несколькими способами, у меня будут услуги, мероприятия и т. Д.

С уважением,
Pentium10

Ответы [ 5 ]

1 голос
/ 18 ноября 2013

Вы можете сделать это так:

DBAdapter.java :

public class DBAdapter {

    private final int DATABASE_VERSION = 1;
    private final Context context;
    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;
    public static final String DATABASE_NAME = "db_title";
    public static final String COLUMN_AUTO_INCREMENT_ID = "auto_increment_id";
    private onDBListeners mDbListener;
    public static final int actionGetAllData = 1, actionInsert = 2, actionUpdate = 3, actionDelete = 4, actionDeleteAll = 5;
    private Object object = null;

    public DBAdapter(Context ctx, onDBListeners listener) {
        context = ctx;
        DBHelper = new DatabaseHelper(context);
        mDbListener = listener;
    }

    private class DatabaseHelper extends SQLiteOpenHelper {

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

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_MY_TABLE);
        }

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

    // ---open database---
    public DBAdapter open() throws SQLException {
        db = DBHelper.getWritableDatabase();
        return this;
    }

    // ---closes database---
    public void close() {
        DBHelper.close();
    }

    public boolean isValidCursor(Cursor cur){
        try {
            if(cur!=null){
                if(cur.getCount()>0){
                    return true;
                }else{
                    return false;
                }
            }else{
                return false;
            }   
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }


    // --- Table for Data ---

            public static final String TABLE_NAME = "tbl_my_table", COLUMN_USER_ID = "user_id", COLUMN_USERNAME = "username";

            private static String[] GET_ALL_DATA() {
                String[] getMessagesData = new String[] {COLUMN_AUTO_INCREMENT_ID, COLUMN_USER_ID,COLUMN_USERNAME};
                return getMessagesData;
            }

            private static final String CREATE_MY_TABLE = "create table "
                    + TABLE_NAME + "(" + COLUMN_AUTO_INCREMENT_ID + " integer primary key autoincrement, "
                    + COLUMN_USER_ID + " text not null, "
                    + COLUMN_USERNAME + " text);";

            // ---insert data in database---
            public void insertData(DataModel dataModel) {
                open();
                ContentValues initialValues = DataModel.getContentValues(dataModel);
                boolean var = db.insert(TABLE_NAME, null, initialValues)>0;
                if(var){
                    mDbListener.onOperationSuccess(TABLE_NAME, actionInsert, object);
                }else{
                    mDbListener.onOperationFailed(TABLE_NAME, actionInsert);
                }
                close();
            }


            // ---get all data---
            public void getAllData() {
                open();
                Cursor cur = db.query(TABLE_NAME, GET_ALL_DATA(), null, null,null, null, null);
                if(cur!=null&&cur.getCount()>0){
                    mDbListener.onOperationSuccess(TABLE_NAME, actionGetAllData, cur);
                }else{
                    mDbListener.onOperationFailed(TABLE_NAME, actionGetAllData);
                }

                cur.close();
                close();
            }

            // ---get all data by id---
            public void getAllDataByUserId(String userId) {
                open();
                Cursor cur = db.query(TABLE_NAME, GET_ALL_DATA(), COLUMN_USER_ID+ " = ?", new String[] {userId},null, null, null);
                if (cur != null && cur.getCount() > 0) {
                    mDbListener.onOperationSuccess(TABLE_NAME, actionGetAllData, cur);
                } else {
                    mDbListener.onOperationFailed(TABLE_NAME, actionGetAllData);
                }

                cur.close();
                close();
            }

            // ---deletes all data---
            public void deleteAllData() {
                open();
                boolean var = db.delete(TABLE_NAME, null, null)>0;
                if(var){
                    mDbListener.onOperationSuccess(TABLE_NAME, actionDeleteAll, object);
                }else{
                    mDbListener.onOperationFailed(TABLE_NAME, actionDeleteAll);
                }

                close();
            }

            // ---deletes single data---
            public void deleteSingleData(String userId) {
                open();
                boolean var = db.delete(TABLE_NAME, COLUMN_USER_ID + "=" + userId, null) > 0;
                if(var){
                    mDbListener.onOperationSuccess(TABLE_NAME, actionDelete, object);
                }else{
                    mDbListener.onOperationFailed(TABLE_NAME, actionDelete);
                }

                close();
            }

            // ---updates a data details---
            public void updateData(DataModel dataModel) {
                open();
                ContentValues initialValues = DataModel.getContentValues(dataModel);
                boolean var = db.update(TABLE_NAME, initialValues, COLUMN_USER_ID + "="+ dataModel.getUserId(), null) > 0;
                if(var){
                    mDbListener.onOperationSuccess(TABLE_NAME, actionUpdate, object);
                }else{
                    mDbListener.onOperationFailed(TABLE_NAME, actionUpdate);
                }
                close();
            }
        }

Добавить ниже Метод в DataModel.java Класс:

public static ContentValues getContentValues(DataModel dataModel){

        ContentValues initialValues = new ContentValues();

        if(dataModel.getUserId()!=null){
            initialValues.put(DBAdapter.COLUMN_USER_ID, dataModel.getUserId()); 
        }

        if(dataModel.getUserName()!=null){
            initialValues.put(DBAdapter.COLUMN_USERNAME, dataModel.getUserName());  
        }

        return initialValues;
    }

Теперь добавить ниже интерфейс для DbOperationListener :

public interface onDBListeners {

    public void onOperationSuccess(String tableName, int operation, Object obj);

    public void onOperationFailed(String tableName, int operation);
}

Сейчас внедрить интерфейс в Активность или Фрагмент :

 public class MyActivity implements onDBListeners{

    private DBAdapter mDbAdapter;

           // Other stuff

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    mDbAdapter = new DBAdapter(MyActivity.this, this);


DataModel mDataModel = new DataModel();
mDataModel.setUserId("1");
mDataModel.setUserName("Hiren");
mDbAdpter.insertData(mDataModel);

    }



    @Override
        public void onOperationSuccess(String tableName, int operation, Object obj) {
            LogUtils.Log_e(TAG, "onOperationSuccess : Table Name - "+tableName+" : Table Operation - "+operation);
            switch (operation) {
            case DBAdapter.actionGetAllData:
                Cursor cur = (Cursor) obj;

                break;
            case DBAdapter.actionInsert:

                break;
            case DBAdapter.actionUpdate:

                break;
            case DBAdapter.actionDelete:

                break;
            case DBAdapter.actionDeleteAll:

                break;
            default:
                break;
            }

        }

        @Override
        public void onOperationFailed(String tableName, int operation) {
            LogUtils.Log_e(TAG, "onOperationFailed : Table Name - "+tableName+" : Table Operation - "+operation);
            switch (operation) {
            case DBAdapter.actionGetAllData:

                break;
            case DBAdapter.actionInsert:

                break;
            case DBAdapter.actionUpdate:

                break;
            case DBAdapter.actionDelete:

                break;
            case DBAdapter.actionDeleteAll:

                break;
            default:
                break;
            }
        }
    }

Вот и все .

1 голос
/ 06 января 2010

Хороший ответ Динедала - & mdash; Учебное пособие «Блокнот» - хорошая отправная точка для того, чтобы узнать об обработке баз данных Android.
Посмотрите другие примеры кода на сайте Android.

Если вы хотите получить простой и последовательный доступ к вашим данным из различных видов деятельности и услуг, вам следует ознакомиться с документацией ContentProvider.

Существует также класс с именем SQLiteOpenHelper, который позволяет вам выполнять базовое управление базами данных SQLite и управление версиями. Довольно прост в использовании.

1 голос
/ 05 января 2010

Предоставленный SDK Учебное пособие для ноутбука проведет вас через основы использования ORM базы данных SQLite, предоставленной в системе, в том виде, как вы описываете.

0 голосов
/ 18 ноября 2010

Вы можете проверить проект android-active-record на http://code.google.com/p/android-active-record/ Хотя он сосредоточен скорее на персистентных моделях Java, вы можете посмотреть на источники и примеры - вы можете найти там много полезных примеров использования SQLite

0 голосов
/ 14 мая 2010

Дайте ActiveAndroid попробовать. Вот пример проекта: https://www.activeandroid.com/help/sample-project/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...