[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
转载请著名出处!谢谢~~
[Android] Sqlite 数据库操作 工具封装类的更多相关文章
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- [Android] SQLite数据库之增删改查基础操作
在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...
- 【Android】实验8 SQLite数据库操作2016.5.12
实验8 SQLite数据库操作 [目的] 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. [要求] 程序主界面是通讯录的目录显示手机 ...
- 安卓 SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
- 在安卓开发中使用SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
- 图解IntelliJ IDEA 13版本对Android SQLite数据库的支持
IntelliJ IDEA 13版本的重要构建之一是支持Android程序开发.当然对Android SQLite数据库的支持也就成为了Android开发者对IntelliJ IDEA 13版本的绝对 ...
- 实验8 SQLite数据库操作
实验报告 课程名称 实验8 SQLite数据库操作 实验日期 2016.5.6 实验项目名称 多媒体应用开发 实验地点 S30010 实验类型 □验证型 √设计型 □综合型 学 时 一 ...
随机推荐
- 用Python爬取"王者农药"英雄皮肤 原
padding: 10px; border-bottom: 1px solid #d3d3d3; background-color: #2e8b57; } .second-menu-item { pa ...
- Leetcode 167. 两数之和 II - 输入有序数组 By Python
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值 ...
- linux中shell脚本引用另一shell脚本
调用有三种方法: 1.fork:不同的shell,调用后返回父shell,子shell从父shell中继承变量,但子shell的变量不会带回父shell,直接用path/to/file.sh调用: 2 ...
- rt-thread 低优先级线程挂起高优先级线程失败
@2019-01-13 [小记] 使用rt-thread线程管理功能时,低优先级线程挂起高优先级线程失败,高优先级线程或同等优先级线程挂起低优先级线程则成功.
- NOIP2017逛公园(dp+最短路)
策策同学特别喜欢逛公园.公园可以看成一张N个点M条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间. 策策每天都会 ...
- Vagrant 遇到的问题
Vagrant was unable to mount VirtualBox shared folders. This is usuallybecause the filesystem "v ...
- Loj 103、10043 (KMP统计子串个数)
KMP算法学习链接:https://blog.csdn.net/starstar1992/article/details/54913261/ KMP算法:可以实现复杂度为O(m+n) 为何简化了时间复 ...
- 浅析 @PathVariable 和 @RequestParam(转发,非原创)
首先 上两个地址:地址①http://localhost:8989/SSSP/emps?pageNo=2地址②http://localhost:8989/SSSP/emp/7如果想获取地址①中的 pa ...
- 扩展方法、委托和Lambda
举例演化Lambda string[] names ={"Burke", "Connor", "Frank", "Everett& ...
- 第三十篇-ToolBar的使用
效果图: 创建标题栏,将原本的Title隐藏,并在菜单栏中设置选项. 一.拖入一个ToolBar组件,并在res/values/styles.xml中将原本的标题栏隐藏,添加<item name ...