设为首页 收藏本站
查看: 697|回复: 0

[经验分享] SQLite 操作封装 —— DatabaseUtil

[复制链接]

尚未签到

发表于 2016-11-30 06:40:00 | 显示全部楼层 |阅读模式
DatabaseUtil.javaview sourceprint?001package com.dbexample;002 003import android.content.ContentValues;004import android.content.Context;005import android.database.Cursor;006import android.database.SQLException;007import android.database.sqlite.SQLiteDatabase;008import android.database.sqlite.SQLiteOpenHelper;009import android.util.Log;010 011public class DatabaseUtil{012 013    private static final String TAG = "DatabaseUtil";014 015    /**016     * Database Name017     */018    private static final String DATABASE_NAME = "student_database";019 020    /**021     * Database Version022     */023    private static final int DATABASE_VERSION = 1;024 025    /**026     * Table Name027     */028    private static final String DATABASE_TABLE = "tb_student";029 030    /**031     * Table columns032     */033    public static final String KEY_NAME = "name";034    public static final String KEY_GRADE = "grade";035    public static final String KEY_ROWID = "_id";036 037    /**038     * Database creation sql statement039     */040    private static final String CREATE_STUDENT_TABLE =041        "create table " + DATABASE_TABLE + " (" + KEY_ROWID + " integer primary key autoincrement, "042        + KEY_NAME +" text not null, " + KEY_GRADE + " text not null);";043 044    /**045     * Context046     */047    private final Context mCtx;048 049    private DatabaseHelper mDbHelper;050    private SQLiteDatabase mDb;051 052    /**053     * Inner private class. Database Helper class for creating and updating database.054     */055    private static class DatabaseHelper extends SQLiteOpenHelper {056        DatabaseHelper(Context context) {057            super(context, DATABASE_NAME, null, DATABASE_VERSION);058        }059        /**060         * onCreate method is called for the 1st time when database doesn't exists.061         */062        @Override063        public void onCreate(SQLiteDatabase db) {064            Log.i(TAG, "Creating DataBase: " + CREATE_STUDENT_TABLE);065            db.execSQL(CREATE_STUDENT_TABLE);066        }067        /**068         * onUpgrade method is called when database version changes.069         */070        @Override071        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {072            Log.w(TAG, "Upgrading database from version " + oldVersion + " to "073                    + newVersion);074        }075    }076 077    /**078     * Constructor - takes the context to allow the database to be079     * opened/created080     *081     * @param ctx the Context within which to work082     */083    public DatabaseUtil(Context ctx) {084        this.mCtx = ctx;085    }086    /**087     * This method is used for creating/opening connection088     * @return instance of DatabaseUtil089     * @throws SQLException090     */091    public DatabaseUtil open() throws SQLException {092        mDbHelper = new DatabaseHelper(mCtx);093        mDb = mDbHelper.getWritableDatabase();094        return this;095    }096    /**097     * This method is used for closing the connection.098     */099    public void close() {100        mDbHelper.close();101    }102 103    /**104     * This method is used to create/insert new record Student record.105     * @param name106     * @param grade107     * @return long108     */109    public long createStudent(String name, String grade) {110        ContentValues initialValues = new ContentValues();111        initialValues.put(KEY_NAME, name);112        initialValues.put(KEY_GRADE, grade);113        return mDb.insert(DATABASE_TABLE, null, initialValues);114    }115    /**116     * This method will delete Student record.117     * @param rowId118     * @return boolean119     */120    public boolean deleteStudent(long rowId) {121        return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;122    }123 124    /**125     * This method will return Cursor holding all the Student records.126     * @return Cursor127     */128    public Cursor fetchAllStudents() {129        return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME,130                KEY_GRADE}, null, null, null, null, null);131    }132 133    /**134     * This method will return Cursor holding the specific Student record.135     * @param id136     * @return Cursor137     * @throws SQLException138     */139    public Cursor fetchStudent(long id) throws SQLException {140        Cursor mCursor =141            mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,142                    KEY_NAME, KEY_GRADE}, KEY_ROWID + "=" + id, null,143                    null, null, null, null);144        if (mCursor != null) {145            mCursor.moveToFirst();146        }147        return mCursor;148    }149 150    /**151     * This method will update Student record.152     * @param id153     * @param name154     * @param standard155     * @return boolean156     */157    public boolean updateStudent(int id, String name, String standard) {158        ContentValues args = new ContentValues();159        args.put(KEY_NAME, name);160        args.put(KEY_GRADE, standard);161        return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + id, null) > 0;162    }163}[代码] 使用方法01//插入02DatabaseUtil dbUtil = new DatabaseUtil(this);03dbUtil.open();04dbUtil.createStudent("Prashant Thakkar", "10th");05dbUtil.close();06 07//查询08DatabaseUtil dbUtil = new DatabaseUtil(this);09dbUtil.open();10Cursor cursor = dbUtil.fetchAllStudents();11if(cursor != null){12   while(cursor.moveToNext()){13    Log.i("Student", "Student Name: " + cursor.getString(1) +14               " Grade " + cursor.getString(2));15   }16}17dbUtil.close();

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-307297-1-1.html 上篇帖子: android SQLite编程详解 下篇帖子: 一个SQLite操作类(JS)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表