android SQLite数据库的基本操作
SQLite是Android使用的轻量级的数据库,开发Android应用是对数据库的操作自然是必不可少。
Android提供了一个SQLiteOpenHelper类来可以很方便的操作数据库,
继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。
onCreate: 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade:当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。
下面是我写的一个SQLite基本操作的demo。
主要包含两个java类——
DBUtil类,继承自SQLiteOpenHelper,用以实现各种操作功能:
package barry.android.db; import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; public class DBUtil extends SQLiteOpenHelper { private final static String DATABASE_NAME = "db2004";
private final static int DATABASE_VERSION = 1;
private static final String TABLE_NAME ="students";
private static final String FILED_1 = "name";
private static final String FILED_2 = "password"; public DBUtil(Context context){
super(context, DATABASE_NAME,null,DATABASE_VERSION);
System.out.println("new DBUtil");
} @Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE "+TABLE_NAME+" ( "+FILED_1 +" TEXT, "+ FILED_2 +" TEXT );";
db.execSQL(sql);
System.out.println("oncreate创建表");
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
System.out.println("onUpgrade删除表");
this.onCreate(db);
} /**
* 查询表中所有的数据
* @return
*/
public Cursor select(){
return this.getReadableDatabase()
.query(TABLE_NAME, null, null, null, null, null, null);
} /**
* 插入一条数据到表中
* @param name 字段一的值
* @param password 字段二的值
*/
public void insert(String name ,String password){
ContentValues cv = new ContentValues();
cv.put(FILED_1, name);
cv.put(FILED_2, password);
this.getWritableDatabase().insert(TABLE_NAME, null, cv);
this.getWritableDatabase().close();//关闭数据库对象
} /**
* 删除表中的若干条数据
* @param name 一个包含所有要删除数据的"name"字段的数组
*/
public void delete(String[] name){
String where = FILED_1+" = ?";
String[] whereValues = name;
this.getWritableDatabase().delete(TABLE_NAME, where, whereValues);
this.getWritableDatabase().close();
} /**
* 更新表中的数据(修改字段二"password")
* @param name 要更新的数据"name"字段值
* @param newPassword 新的"password"字段
*/
public void update(String name,String newPassword){
ContentValues cv = new ContentValues();
cv.put(FILED_2, newPassword);
String where =FILED_1+" = ?";
String[] whereValues= {name};
this.getWritableDatabase().update(TABLE_NAME, cv, where, whereValues);
this.getWritableDatabase().close();
} /**
* 清空表中的数据
*/
public void clean (){
this.getWritableDatabase().execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
System.out.println("clean删除表");
this.onCreate(this.getWritableDatabase());
this.getWritableDatabase().close();
}
}
以及调用DBUtil的Activity:
package barry.android.db; import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle; public class Demo04_helperActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); DBUtil dbUtil = new DBUtil(this);
dbUtil.insert("周杰伦", "jaychou");
dbUtil.insert("韩寒", "twocolds");
dbUtil.insert("郭德纲", "yunhejiuxiao"); System.out.println("***********************************全部数据息");
printData(dbUtil); dbUtil.delete(new String[]{"周杰伦"}); System.out.println("***********************************删除'周杰伦'之后数据");
printData(dbUtil); dbUtil.update("郭德纲", "longtengsihai");;
System.out.println("***********************************修改‘郭德纲’的密码为'longtengsihai'");
printData(dbUtil); dbUtil.clean(); } private void printData(DBUtil dbUtil) {
Cursor cursor = dbUtil.select();
if(cursor.moveToFirst()){
System.out.println("当前表中的数据条数:"+cursor.getCount());
do{
System.out.println(cursor.getString(0)+cursor.getString(1));
}while(cursor.moveToNext());
}
cursor.close();
}
}
该程序所执行的操作为:
1.在创建一个名为"db2004"的数据库,(即DBUtil的“DATABASE_NAME”字段)。
2.当数据库被首次创建时执行DBUtil的onCreate方法,创建一张名为students的表,包含两个字段(name,password)。(即DBUtil的”TABLE_NAME、FILED_1、FILED_2”字段)。
3.往数据库中插入三条数据“周杰伦、韩寒、郭德纲”。然后.查询出表中所有数据并打印。
4.删除数据“周杰伦”。然后.查询出表中所有数据并打印。
5.将数据“郭德纲”的password修改为"longtengsihai"。然后.查询出表中所有数据并打印。
6.清除表中的所有数据,程序结束。
执行的结果为:
02-07 11:22:47.361: I/System.out(962): new DBUtil
02-07 11:22:47.490: I/System.out(962): ***********************************全部数据息
02-07 11:22:47.490: I/System.out(962): 当前表中的数据条数:3
02-07 11:22:47.500: I/System.out(962): 周杰伦jaychou
02-07 11:22:47.500: I/System.out(962): 韩寒twocolds
02-07 11:22:47.500: I/System.out(962): 郭德纲yunhejiuxiao
02-07 11:22:47.511: I/System.out(962): ***********************************删除'周杰伦'之后数据
02-07 11:22:47.540: I/System.out(962): 当前表中的数据条数:2
02-07 11:22:47.540: I/System.out(962): 韩寒twocolds
02-07 11:22:47.550: I/System.out(962): 郭德纲yunhejiuxiao
02-07 11:22:47.560: I/System.out(962): ***********************************修改‘郭德纲’的密码为'longtengsihai'
02-07 11:22:47.590: I/System.out(962): 当前表中的数据条数:2
02-07 11:22:47.590: I/System.out(962): 韩寒twocolds
02-07 11:22:47.590: I/System.out(962): 郭德纲longtengsihai
02-07 11:22:47.601: I/System.out(962): clean删除表
02-07 11:22:47.610: I/System.out(962): oncreate创建表
结果正确。
android SQLite数据库的基本操作的更多相关文章
- Android——SQLite/数据库 相关知识总结贴
android SQLite简介 http://www.apkbus.com/android-1780-1-1.html Android SQLite基础 http://www.apkbus.com/ ...
- Android Sqlite 数据库版本更新
Android Sqlite 数据库版本更新 http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承 ...
- Android SQLite 数据库详细介绍
Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...
- Android sqlite数据库存取图片信息
Android sqlite数据库存取图片信息 存储图片:bitmap private byte[] getIconData(Bitmap bitmap){ int size = bitmap.get ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- 图解IntelliJ IDEA 13版本对Android SQLite数据库的支持
IntelliJ IDEA 13版本的重要构建之一是支持Android程序开发.当然对Android SQLite数据库的支持也就成为了Android开发者对IntelliJ IDEA 13版本的绝对 ...
- [Android] SQLite数据库之增删改查基础操作
在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...
- Android Sqlite数据库加密
Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个: 1. 对几个关键的字段使用加密算法,再存入数据库 2. 对整个数据库进行加密 SQLite数据库加密工具: 收 ...
- Android SQLite数据库使用
在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面.本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的.一. ...
随机推荐
- java字符串反转
1.递归反转 public static String reverseString(String x) { if (x == null || x.length() < 2) return x; ...
- 15个优秀的开源项目,让你轻松应对Android开发
一.huabanDemo-android 应用material design版的花瓣网App 项目地址 https://github.com/LiCola/huabanDemo 二.创建视差效果引导页 ...
- Android笔记(五):广播接收者(Broadcast Receiver)
Android有四大组件,分别为:Activity(活动).Service(服务).Content Provider(内容提供器).Broadcast Receiver(广播接收者). 引入广播的目的 ...
- poj 1184
经典的宽搜题目,感觉最好的办法应该是双向广搜. 不过用简单的启发式搜索可以飘过. #include <iostream> #include <cstdio> #include ...
- android: LayoutInflater使用
1. 题外话 相信大家对LayoutInflate都不陌生,特别在ListView的Adapter的getView方法中基本都会出现,使用inflate方法去加载一个布局,用于ListView的每个I ...
- 你的项目真的需要Session吗? redis保存session性能怎么样?
在web开发中,Session这个东西一直都很重要,至少伴随我10年之久, 前一段时间发生一个性能问题,因为Redis session 问题,后来想想 其实我的项目session 是不需要的. 先看看 ...
- 服务 Service 简单案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 可显示行号的log工具
import android.util.Log; /** * (ExtendedLog=>ELog)可以记录行号,类名,方法名的Log工具 * * @author Fantouch */ pub ...
- easyui confirm提示框 调整显示位置
方法一: $.messager.confirm("确认对话框","该客户已经存在!确定:查看该客户 ", function(r){ if(r){ alert(& ...
- Easyui-DataGrid 分页多选框 及 遍历所有选中项
html <table id='grid' class='easyui-datagrid' style='height:500px' url='Ajax-index.php?module=< ...