1、DbHelper类 继承自SQLiteOpenHelper类,实现对数据库的基本操作

package com.example.utils;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; /**
* Created by Administrator on 2017/12/18.
*/ public class DbHelper extends SQLiteOpenHelper { //声明数据库的名称
private static final String DATABASE_NAME="content.db";
//声明版本号
private static final int VERSION=1;
//重写构造方法
private DbHelper(Context context) {
super(context, DATABASE_NAME,null, VERSION);
}
private DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME,null, VERSION);
} //创建数据库的方法
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String sql="create table if not exists tb_stu(" +
"_id integer primary key," +
"sname text," +
"sage integer," +
"ssex text" +
")";
sqLiteDatabase.execSQL(sql);
sql="insert into tb_stu(sname,sage,ssex) values('Jack',23,'男')";
sqLiteDatabase.execSQL(sql);
sql="insert into tb_stu(sname,sage,ssex) values('Lucy',22,'女')";
sqLiteDatabase.execSQL(sql);
} //当数据库发生版本更新的方法
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
String sql="drop table tb_stu";
sqLiteDatabase.execSQL(sql);
onCreate(sqLiteDatabase);
} //单例模式
private static DbHelper dbHelper; public static synchronized DbHelper getInstance(Context context){
if(dbHelper==null)
dbHelper=new DbHelper(context);
return dbHelper;
}
}

2、使用单例模式,对DbHelper进行封装(一般在实现数据操作时,调用此类中的方法,而不是DbHelper类中的)

package com.example.utils;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; /**
* Created by Administrator on 2017/12/18.
*/ public class DbUtils { //声明SQLite数据库
SQLiteDatabase sdb;
//创建构造方法并实例化SQLiteDatabase对象
public DbUtils(Context context){
sdb=DbHelper.getInstance(context).getReadableDatabase();
} //调用SQLiteDatabase对象的 添加 方法进行数据添加,返回值为添加数据行的ID
public long insert(String tableName, ContentValues values){
long id=sdb.insert(tableName,null,values);
return id;
} //调用SQLiteDatabase对象的 修改 方法进行数据添加,返回值为修改数据行的ID
public int update(String tableName,ContentValues values,String where,String[] whereArgs){
int i=sdb.update(tableName,values,where,whereArgs);
return i;
} //调用SQLiteDatabase对象的 删除 方法进行数据添加,返回值为删除行
public int delete(String tableName,String where,String[] whereArgs){
int i=sdb.delete(tableName,where,whereArgs);
return i;
} //调用SQLiteDatabase对象的 查询 方法进行数据添加,返回值为游标
public Cursor query(String tableName,String[] columns,String selection,String[] selectArgs,String groupBy,String having,String orderBy,String limit){
Cursor cursor=sdb.query(tableName,columns,selection,selectArgs,groupBy,having,orderBy,limit);
return cursor;
}
}

Android 常用数据操作封装类案例的更多相关文章

  1. Android 常用数据适配器SimpleAdapter

    在<Android 常用数据适配器ArrayAdapter>中介绍了ArrayAdapter数据适配器.但是存在一个缺陷,那就是条目的图标都固定相同,要显示每个条目的图标都不相同,那么使用 ...

  2. SNMP常用数据操作

    SNMP常用数据操作 snmp编程中常见的数据类型基本上就是integer32/oct_str(字节数组)/counter64/timeticks/dateAndTime这些.很多其它的比如Truth ...

  3. Android 常用数据适配器ArrayAdapter

    接着上篇文章<Android 采用Layout Inflater创建一个View对象>,本文采用常用数据适配器ArrayAdapter 新建项目后,在layout文件夹下新建list_it ...

  4. mybatis 2 -常用数据操作

    1.写入数据并获取自增ID XML配置: <!-- 写入数据获取自增ID --> <insert id="insertLog" parameterType=&qu ...

  5. MySql常用数据操作

    1.数据库操作: MySQL服务管理命令: 1.启动服务:sudo service mysql start 2.停止服务:sudo service mysql stop 3.重新启动服务:sudo s ...

  6. Delphi ADO数据操作封装类

    [delphi] view plaincopyprint? { 将数据集操作方面的东西全部封装成一个单独的类 TcustomAdoDataSet是TadoQuery.TadoTable.TadoDat ...

  7. Android常用数据类型转换

    String转int.float.double.byte[].bitmap Int i = Integer.parseInt(str); Float f = Float.parseFloat(str) ...

  8. 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

    1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...

  9. Android清除本地数据缓存代码案例

    Android清除本地数据缓存代码案例 直接上代码: /*  * 文 件 名:  DataCleanManager.java  * 描    述:  主要功能有清除内/外缓存,清除数据库,清除shar ...

随机推荐

  1. JavaCV 学习(二):使用 JavaCV + FFmpeg 制作拉流播放器

    一.前言 在 Android 音视频开发学习思路 中,我们不断的学习和了解音视频相关的知识,随着知识点不断的学习,我们现在应该做的事情,就是将知识点不断的串联起来.这样才能得到更深层次的领悟.通过整理 ...

  2. 移动web-bootstrap

    1bootstarp布局容器+栅格系统的使用 1.101-移动web-bootstrap中的布局容器 1.container和container-fluid的区别? a) container      ...

  3. maven安装和四大特性

    一.安装配置maven 官网下载:http://maven.apache.org/download.html 1:解压后放在一个固定的位置 2:配置环境变量,具体如下 新建系统环境变量:MAVEN_H ...

  4. 服务器端PHP允许跨域

    解决跨域的关键是设置 Access-Control-Allow-Origin. 例如:客户端的域名是 api.itbsl.com,而请求的域名是www.itbsl.com 如果直接使用ajax访问,会 ...

  5. Anaconda下载地址

    Anaconda installer archive:地址1: https://repo.continuum.io/archive/地址2:https://mirrors.tuna.tsinghua. ...

  6. 阿里妈妈前端团队出品的开源接口管理工具RAP第二代 http://rap2.taobao.org

    RAP2-DELOS 开源社区版本 (后端API服务器) 项目地址:https://github.com/thx/rap2-delos RAP2是在RAP1基础上重做的新项目,它包含两个组件(对应两个 ...

  7. Ajax 提交 数据含特殊字符 出现500错误

    Ajax 请求API接口 传输过去的数据 含有特殊字符,Ajax请求失败出现500错误. 假设你要post过去的数据为 :data  ==>>  {a:'!@!@!@!@#$#{}|> ...

  8. 【shiro】(5)---基于Shiro的权限管理

    基于Shiro的权限管理项目搭建 前面写了四篇有关权限的文章,算是这篇文章的铺垫了.这篇文章采用 开发环境           JDK1.8          Eclipse          Mav ...

  9. mysql 开发进阶篇系列 54 权限与安全(账号管理的各种权限操作 下)

    1. 查看权限 -- 如果host值不是%, 就要加上host值,下面查看bkpuser用户权限(6个权限, 限本地连接) SHOW GRANTS FOR bkpuser@localhost; -- ...

  10. Android布局:宽度适应的横向跟随,防止挤掉重要视图

    不知道这样的布局该怎么描述,标题也是乱取的..直接上图吧 最近遇到了这样要求的布局: 1.上图中的“标题”长度不定,“状态”标签可能有多个并紧跟在标题右边,“属性”一直居右显示: 2.当“标题”过长, ...