sqlite 数据库封装类

DatabaseUtil.java(封装的类)

  1. package com.jack.androidbase.tools;
  2.  
  3. import android.content.ContentValues;
  4. import android.content.Context;
  5. import android.database.Cursor;
  6. import android.database.SQLException;
  7. import android.database.sqlite.SQLiteDatabase;
  8. import android.database.sqlite.SQLiteOpenHelper;
  9. import android.util.Log;
  10.  
  11. /**
  12. * sqlite 数据库操作类
  13. */
  14. public class DatabaseUtil {
  15.  
  16. private static final String TAG = "DatabaseUtil";
  17.  
  18. /**
  19. * Database Name
  20. */
  21. private static final String DATABASE_NAME = "student_data";
  22.  
  23. /**
  24. * Database Version
  25. */
  26. private static final int DATABASE_VERSION = 1;
  27.  
  28. /**
  29. * Table Name
  30. */
  31. private static final String DATABASE_TABLE = "tb_student";
  32.  
  33. /**
  34. * Table columns
  35. */
  36. public static final String KEY_NAME = "name";
  37. public static final String KEY_GRADE = "grade";
  38. public static final String KEY_ROWID = "_id";
  39.  
  40. /**
  41. * Database creation sql statement
  42. */
  43. private static final String CREATE_TABLE =
  44. "create table " + DATABASE_TABLE + " (" + KEY_ROWID + " integer primary key autoincrement, "
  45. + KEY_NAME + " text not null, " + KEY_GRADE + " text not null);";
  46.  
  47. /**
  48. * Context
  49. */
  50. private final Context mCtx;
  51.  
  52. private DatabaseHelper mDbHelper;
  53. private SQLiteDatabase mDb;
  54.  
  55. /**
  56. * Inner private class. Database Helper class for creating and updating database.
  57. */
  58. private static class DatabaseHelper extends SQLiteOpenHelper {
  59. DatabaseHelper(Context context) {
  60. super(context, DATABASE_NAME, null, DATABASE_VERSION);
  61. }
  62.  
  63. /**
  64. * onCreate method is called for the 1st time when database doesn't exists.
  65. */
  66. @Override
  67. public void onCreate(SQLiteDatabase db) {
  68. Log.i(TAG, "Creating DataBase: " + CREATE_TABLE);
  69. db.execSQL(CREATE_TABLE);
  70. }
  71.  
  72. /**
  73. * onUpgrade method is called when database version changes.
  74. */
  75. @Override
  76. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  77. Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
  78. + newVersion);
  79. }
  80. }
  81.  
  82. /**
  83. * Constructor - takes the context to allow the database to be
  84. * opened/created
  85. *
  86. * @param ctx the Context within which to work
  87. */
  88. public DatabaseUtil(Context ctx) {
  89. this.mCtx = ctx;
  90. }
  91.  
  92. /**
  93. * This method is used for creating/opening connection
  94. *
  95. * @return instance of DatabaseUtil
  96. * @throws SQLException
  97. */
  98. public DatabaseUtil open() throws SQLException {
  99. mDbHelper = new DatabaseHelper(mCtx);
  100. mDb = mDbHelper.getWritableDatabase();
  101. return this;
  102. }
  103.  
  104. /**
  105. * This method is used for closing the connection.
  106. */
  107. public void close() {
  108. mDbHelper.close();
  109. }
  110.  
  111. /**
  112. * This method is used to create/insert new record record.
  113. *
  114. * @param name
  115. * @param grade
  116. * @return long
  117. */
  118. public long insert(String name, String grade) {
  119. ContentValues initialValues = new ContentValues();
  120. initialValues.put(KEY_NAME, name);
  121. initialValues.put(KEY_GRADE, grade);
  122. return mDb.insert(DATABASE_TABLE, null, initialValues);
  123. }
  124.  
  125. /**
  126. * This method will delete record.
  127. *
  128. * @param rowId
  129. * @return boolean
  130. */
  131. public boolean delete(long rowId) {
  132. return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
  133. }
  134.  
  135. /**
  136. * This method will deleteAll record.
  137. *
  138. * @return
  139. */
  140. public boolean deleteAll() {
  141. return mDb.delete(DATABASE_TABLE, " 1 ", null) > 0;
  142. }
  143.  
  144. /**
  145. * This method will return Cursor holding all the records.
  146. *
  147. * @return Cursor
  148. */
  149. public Cursor fetchAll() {
  150. return mDb.query(DATABASE_TABLE, new String[]{KEY_ROWID, KEY_NAME,
  151. KEY_GRADE}, null, null, null, null, null);
  152. }
  153.  
  154. /**
  155. * This method will return Cursor holding the specific record.
  156. *
  157. * @param id
  158. * @return Cursor
  159. * @throws SQLException
  160. */
  161. public Cursor fetch(long id) throws SQLException {
  162. Cursor mCursor =
  163. mDb.query(true, DATABASE_TABLE, new String[]{KEY_ROWID,
  164. KEY_NAME, KEY_GRADE}, KEY_ROWID + "=" + id, null,
  165. null, null, null, null);
  166. if (mCursor != null) {
  167. mCursor.moveToFirst();
  168. }
  169. return mCursor;
  170. }
  171.  
  172. /**
  173. * This method will update record.
  174. *
  175. * @param id
  176. * @param name
  177. * @param standard
  178. * @return boolean
  179. */
  180. public boolean update(int id, String name, String standard) {
  181. ContentValues args = new ContentValues();
  182. args.put(KEY_NAME, name);
  183. args.put(KEY_GRADE, standard);
  184. return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + id, null) > 0;
  185. }
  186. }

使用详解:

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

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

[Android] Sqlite 数据库操作 工具封装类的更多相关文章

  1. Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库

    下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...

  2. 我的Android六章:Android中SQLite数据库操作

    今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...

  3. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

  4. [Android] SQLite数据库之增删改查基础操作

        在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...

  5. 【Android】实验8 SQLite数据库操作2016.5.12

    实验8  SQLite数据库操作 [目的] 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. [要求] 程序主界面是通讯录的目录显示手机 ...

  6. 安卓 SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  7. 在安卓开发中使用SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  8. 图解IntelliJ IDEA 13版本对Android SQLite数据库的支持

    IntelliJ IDEA 13版本的重要构建之一是支持Android程序开发.当然对Android SQLite数据库的支持也就成为了Android开发者对IntelliJ IDEA 13版本的绝对 ...

  9. 实验8 SQLite数据库操作

    实验报告 课程名称 实验8  SQLite数据库操作 实验日期 2016.5.6 实验项目名称 多媒体应用开发 实验地点 S30010 实验类型 □验证型    √设计型    □综合型 学  时 一 ...

随机推荐

  1. MT【269】含参函数绝对值最大

    设函数$f(x)=ax^2+(2b+1)x-a-2$($a,b\in\mathcal R$,$a\neq 0$). (1) 若$a=-2$,求函数$y=|f(x)|$在$[0,1]$上的最大值$M(b ...

  2. 【Gym 100971G】Repair

    BUPT 2017 summer training (for 16) #1B 题意 Alex is repairing his country house. He has a rectangular ...

  3. zabbix 自动发现端口并添加监控设置

    自动发现端口并添加监控设置UserParameter=net.listen.discovery,sudo /etc/zabbix/scripts/discovery_listport.sh #!/bi ...

  4. Python的快排应有的样子

    快排算法 ​ 简单来说就是定一个位置然后,然后把比它小的数放左边,比他大的数放右边,这显然是一个递归的定义,根据这个思路很容易可以写出快排的代码 ​ 快排是我学ACM路上第一个让我记住的代码,印象很深 ...

  5. Codeforces Round #555 (Div. 3)[1157]题解

    不得不说这场div3是真的出的好,算得上是从我开始打开始最有趣的一场div3.因为自己的号全都蓝了,然后就把不经常打比赛的dreagonm的号借来打这场,然后...比赛结束rank11(帮dreago ...

  6. [2017-7-28]Android Learning Day6

    常用控件 Spinner DatePickerDialog TimePickerDiaog RadioButton CheckBox spinner(下拉菜单) <Spinner android ...

  7. BZOJ2839集合计数

    题目描述 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~ ...

  8. poj 1611 The Suspects(并查集输出集合个数)

    Description Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, wa ...

  9. 20165223 实验三 敏捷开发与XP实践

    目录 一.实验报告封面 二.具体实验内容 (一)敏捷开发与XP实践-1 代码规范格式化 (二)敏捷开发与XP实践-2 添加搭档项目 (三)敏捷开发与XP实践-3 搭档代码重构 (四)敏捷开发与XP实践 ...

  10. OI生涯回忆录 2018.11.12~2019.4.15

    上一篇:OI生涯回忆录 2017.9.10~2018.11.11 一次逆风而行的成功,是什么都无法代替的 ………… 历经艰难 我还在走着 一 NOIP之后,全机房开始了省选知识的自学. 动态DP,LC ...