zoukankan      html  css  js  c++  java
  • [Android] Sqlite 数据库操作 工具封装类

    sqlite 数据库封装类

    DatabaseUtil.java(封装的类)

    package com.jack.androidbase.tools;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
    
    /**
     * sqlite 数据库操作类
     */
    public class DatabaseUtil {
    
        private static final String TAG = "DatabaseUtil";
    
        /**
         * Database Name
         */
        private static final String DATABASE_NAME = "student_data";
    
        /**
         * Database Version
         */
        private static final int DATABASE_VERSION = 1;
    
        /**
         * Table Name
         */
        private static final String DATABASE_TABLE = "tb_student";
    
        /**
         * Table columns
         */
        public static final String KEY_NAME = "name";
        public static final String KEY_GRADE = "grade";
        public static final String KEY_ROWID = "_id";
    
        /**
         * Database creation sql statement
         */
        private static final String CREATE_TABLE =
                "create table " + DATABASE_TABLE + " (" + KEY_ROWID + " integer primary key autoincrement, "
                        + KEY_NAME + " text not null, " + KEY_GRADE + " text not null);";
    
        /**
         * Context
         */
        private final Context mCtx;
    
        private DatabaseHelper mDbHelper;
        private SQLiteDatabase mDb;
    
        /**
         * Inner private class. Database Helper class for creating and updating database.
         */
        private static class DatabaseHelper extends SQLiteOpenHelper {
            DatabaseHelper(Context context) {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
    
            /**
             * onCreate method is called for the 1st time when database doesn't exists.
             */
            @Override
            public void onCreate(SQLiteDatabase db) {
                Log.i(TAG, "Creating DataBase: " + CREATE_TABLE);
                db.execSQL(CREATE_TABLE);
            }
    
            /**
             * onUpgrade method is called when database version changes.
             */
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                        + newVersion);
            }
        }
    
        /**
         * Constructor - takes the context to allow the database to be
         * opened/created
         *
         * @param ctx the Context within which to work
         */
        public DatabaseUtil(Context ctx) {
            this.mCtx = ctx;
        }
    
        /**
         * This method is used for creating/opening connection
         *
         * @return instance of DatabaseUtil
         * @throws SQLException
         */
        public DatabaseUtil open() throws SQLException {
            mDbHelper = new DatabaseHelper(mCtx);
            mDb = mDbHelper.getWritableDatabase();
            return this;
        }
    
        /**
         * This method is used for closing the connection.
         */
        public void close() {
            mDbHelper.close();
        }
    
        /**
         * This method is used to create/insert new record record.
         *
         * @param name
         * @param grade
         * @return long
         */
        public long insert(String name, String grade) {
            ContentValues initialValues = new ContentValues();
            initialValues.put(KEY_NAME, name);
            initialValues.put(KEY_GRADE, grade);
            return mDb.insert(DATABASE_TABLE, null, initialValues);
        }
    
        /**
         * This method will delete record.
         *
         * @param rowId
         * @return boolean
         */
        public boolean delete(long rowId) {
            return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
        }
    
        /**
         * This method will deleteAll record.
         *
         * @return
         */
        public boolean deleteAll() {
            return mDb.delete(DATABASE_TABLE, " 1 ", null) > 0;
        }
    
        /**
         * This method will return Cursor holding all the records.
         *
         * @return Cursor
         */
        public Cursor fetchAll() {
            return mDb.query(DATABASE_TABLE, new String[]{KEY_ROWID, KEY_NAME,
                    KEY_GRADE}, null, null, null, null, null);
        }
    
        /**
         * This method will return Cursor holding the specific record.
         *
         * @param id
         * @return Cursor
         * @throws SQLException
         */
        public Cursor fetch(long id) throws SQLException {
            Cursor mCursor =
                    mDb.query(true, DATABASE_TABLE, new String[]{KEY_ROWID,
                                    KEY_NAME, KEY_GRADE}, KEY_ROWID + "=" + id, null,
                            null, null, null, null);
            if (mCursor != null) {
                mCursor.moveToFirst();
            }
            return mCursor;
        }
    
        /**
         * This method will update record.
         *
         * @param id
         * @param name
         * @param standard
         * @return boolean
         */
        public boolean update(int id, String name, String standard) {
            ContentValues args = new ContentValues();
            args.put(KEY_NAME, name);
            args.put(KEY_GRADE, standard);
            return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + id, null) > 0;
        }
    }

    使用详解:

    DatabaseUtil dbUtil = new DatabaseUtil(this);
            dbUtil.open();

            switch (v.getId()) {
                case R.id.other_btn_sqlite_list: //查询
                    Cursor cursor = dbUtil.fetchAll();
                    if (cursor != null) {
                        while (cursor.moveToNext()) {
                            Log.i("Student", "ID:" + cursor.getInt(0) + ",Student Name: " + cursor.getString(1) +
                                    ",Grade: " + cursor.getString(2));
                        }
                    }
                    break;
                case R.id.other_btn_sqlite_add:
                    dbUtil.insert("Prashant Thakkar", "100");
                    Log.i("Student", "add over");
                    break;
                case R.id.other_btn_sqlite_update:
                    dbUtil.update(1, "aa", "bb");
                    Log.i("Student", "update over");
                    break;
                case R.id.other_btn_sqlite_del:
                    dbUtil.delete(2);
                    Log.i("Student", "delete over");
                    break;
                case R.id.other_btn_sqlite_del_all:
                    dbUtil.deleteAll();
                    Log.i("Student", "delete all over");
                    break;
            }
            dbUtil.close();

     参考网址:

    https://www.cnblogs.com/sowhat4999/p/4439856.html

    https://www.cnblogs.com/ProMonkey/p/5765616.html   (有添加单例模式)

    本博客地址: wukong1688

    本文原文地址:https://www.cnblogs.com/wukong1688/p/10666280.html

    转载请著名出处!谢谢~~

  • 相关阅读:
    Git SVN 版本控制 简介 总结 MD
    shape selector 背景 圆形 矩形 圆环 [MD]
    eclipse library jar包 使用总结 MD
    Visitor 访问者模式 [MD]
    BlazeMeter+Jmeter 搭建接口测试框架
    nGrinder 简易使用教程
    65个面试常见问题技巧回答(绝对实用)
    [面试技巧]16个经典面试问题回答思路
    质量模型测试电梯
    linux apache服务器优化建议整理(很实用)
  • 原文地址:https://www.cnblogs.com/wukong1688/p/10666280.html
Copyright © 2011-2022 走看看