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. 移动端点击事件300ms延迟问题解决方案——fastclick.js

    移动端点击事件300ms延迟的问题由来已久,如下截图 下面截图来自原文:https://www.jianshu.com/p/6e2b68a93c88 网上关于300ms延迟问题的解决方法,大致分为 3 ...

  2. Python Tkinter 简单使用

    简单的一些实例,能够实现一般的功能就够用了 Tkinter: 创建顶层窗口: # -*- coding: utf-8 -*- from Tkinter import *   root = Tk() r ...

  3. python 字符串拼接

    str1 = 'abc' str2 = 'def' str3 = str1 + str2 print(str3) 这种方法只需要申请一次内存.

  4. GCC的__attribute__ ((constructor))和__attribute__ ((destructor))

    通过一个简单的例子介绍一下gcc的__attribute__ ((constructor))属性的作用.gcc允许为函数设置__attribute__ ((constructor))和__attrib ...

  5. 机器学习入门12 - 分类 (Classification)

    原文链接:https://developers.google.com/machine-learning/crash-course/classification/ 1- 指定阈值 为了将逻辑回归值映射到 ...

  6. Vue 中是如何解析 template 字符串为 VNode 的?

    在接触 React 时候,我只了解到通过 babel 可以把 JSX 转成 VNode(通过调用 React.createElement 方法),但是对其具体是如何转换的却不了解. 很明显,回答失败. ...

  7. Api 文档管理系统 RAP2 环境搭建

    Api 文档管理系统 RAP2 环境搭建  发表于 2018-03-27 |  分类于 Api |  评论数: 4|  阅读次数: 4704  本文字数: 4.8k |  阅读时长 ≍ 9 分钟 RA ...

  8. ML - 特征选择

    1. 决策树中的特征选择 分类决策树是一种描述对实例进行分类的树型结构,决策树学习本质上就是从训练数据集中归纳出一组分类规则,而二叉决策树类似于if-else规则.决策树的构建也是非常的简单,首先依据 ...

  9. 【jQuery】(2)---Jquery过滤选择器

                         1.基础选择器: 名称 说明 举例 #id 根据元素Id选择 $("divId") 选择ID为divId的元素 element 根据元素的 ...

  10. Kubernetes 持续集成 SpringCloud

    写在开始之前,在开始之前我们需要了解几个概念: 1.什么是持续集成? 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次 ...