文档章节

android数据库

骑牛找牛
 骑牛找牛
发布于 2014/02/02 15:14
字数 963
阅读 141
收藏 8

关系型数据库SQLite3,它是一个支持SQL轻量级的嵌入式数据库,在嵌入式操作上有很广泛的,WM采用的也是SQLite3

首先,我们看一下api,所有数据库相关的接口、类都在.database和android.database.sqlite两个包下,虽然只有两个包,但是如果你英文不好或是太懒的话也要迷茫一段时间,其实,我们真正用的到的没有几个!


1、SQLiteOpenHelper (android.database.sqlite.SQLiteOpenHelper)


这是一个抽象类,关于抽象类我们都知道,如果要使用它,一定是继承它!


这个类的方法很少,有一个构造方法


SQLiteOpenHelper(android.content.Context context, java.lang.String name,android.database.sqlite.SQLiteDatabase.CursorFactory factory, int version);


参数不做过多的解释,CursorFactory一般直接传null就可以


public void onCreate(SQLiteDatabase db)


此方法在创建数据库是被调用,所以,应该把创建表的操作放到这个方法里面,一会儿在后面我们会再详细的说如何创建表


public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)


从方法名上我们就能知道这个方法是执行更新的,没错,当version改变是系统会调用这个方法,所以在这个方法里应该执行删除现有表,然后手动调用onCreate的操作


SQLiteDatabase getReadableDatabase()


可读的SQLiteDatabase对象


SQLiteDatabase getWritableDatabase()


获取可写的SQLiteDatabase对象


2、SQLiteDatabase(android.database.sqlite.SQLiteDatabase)


关于操作数据库的工作(增、删、查、改)都在这个类里


execSQL(sql)


执行SQL语句,用这个方法+SQL语句可以非常方便的执行增、删、查、改


除此之外,Android还提供了功过方法实现增、删、查、改


long insert(TABLE_NAME, null, contentValues)添加记录


int delete(TABLE_NAME, where, whereValue)删除记录


int update(TABLE_NAME, contentValues, where, whereValue) 更新记录


Cursor query(TABLE_NAME, null, null, null, null, null, null) 查询记录


除此之外,还有很多方法,如:beginTransaction()开始事务、endTransaction()结束事务...有兴趣的可以自己看api,这里就不多赘述了


3、Cursor(android.database.Cursor)


游标(接口),这个很熟悉了吧,Cursor里的方法非常多,常用的有:


boolean moveToPosition(position)将指针移动到某记录


getColumnIndex(Contacts.People.NAME)按列名获取id


int getCount()获取记录总数


boolean requery()重新查询


boolean isAfterLast()指针是否在末尾


boolean isBeforeFirst()时候是开始位置


boolean isFirst()是否是第一条记录


boolean isLast()是否是最后一条记录


boolean moveToFirst()、 boolean moveToLast()、 boolean moveToNext()同moveToPosition(position)


4、SimpleCursorAdapter(android.widget.SimpleCursorAdapter)


也许你会奇怪了,之前我还说过关于数据库的操作都在database和database.sqlite包下,为什么把一个Adapter放到这里,如果你用过Android的SQLite3,你一定会知道


,这是因为我们对数据库的操作会经常跟列表联系起来


经常有朋友会在这出错,但其实也很简单


SimpleCursorAdapter adapter = new SimpleCursorAdapter(


this,


R.layout.list,


myCursor,


new String[] ,


new int[]);


my.setAdapter(adapter);


一共5个参数,具体如下:


参数1:Content


参数2:布局


参数3:Cursor游标对象


参数4:显示的字段,传入String[]


参数5:显示字段使用的组件,传入int[],该数组中是TextView组件的id



一、写一个类继承SQLiteOpenHelpe


public class DatabaseHelper extends SQLiteOpenHelper


构造方法:


DatabaseHelper(Context context) {


super(context, DATABASE_NAME, null, DATABASE_VERSION);


}


在onCreate方法里写建表的操作


public void onCreate(SQLiteDatabase db) {


String sql = "CREATE TABLE tb_test (_id INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT,class_jb TEXT NOT NULL,class_ysbj TEXT NOT NULL,title TEXT NOT NULL,content_ysbj TEXT NOT NULL)";


db.execSQL(sql);//需要异常捕获


}


在onUpgrade方法里删除现有表,然后手动调用onCtreate创建表


public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


String sql = "drop table "+tbname;


db.execSQL(sql);


onCreate(db);


}


对表增、删、查、改的方法,这里用的是SQLiteOpenHelper提供的方法,也可以用sql语句实现,都是一样的


关于获取可读/可写SQLiteDatabase,我不说大家也应该会想到,只有查找才会用到可读的SQLiteDatabase


/**


* 添加数据


*/


public long insert(String tname,  


© 著作权归作者所有

骑牛找牛
粉丝 2
博文 28
码字总数 29263
作品 0
常德
私信 提问
Android数据库的SQLite增删改查

这个月的17日,就要去大连比赛了,是今年的职业技能大赛,整理了一下自己过去写过的代码,这个是Android数据库的知识,涉及数据库的增删改查,代码很普通,稍有Android基础的,估计都能看懂,...

蓝莫无邪
2013/06/13
0
0
图解IntelliJ IDEA 13版本对Android SQLite数据库的支持

IntelliJ IDEA 13版本的重要构建之一是支持Android程序开发。当然对Android SQLite数据库的支持也就成为了Android开发者对IntelliJ IDEA 13版本的绝对关注。 值得高兴的是开发者现在可以直接...

kouxunli1
2014/01/08
0
0
Android中activity如何刷新?

A activity 列表显示数据库的内容,单击item,用startactivity 打开 B activity修改数据库数据。 修改保存后 B finish, 并用 startactivity 打开 A activity.原有的 A activity仍存在。按手机...

youseefj
2014/06/16
9.3K
9
Android Activity---协调Activity

当一个Activity启动另一个Activity时,它们都经历了生命周期的转换。第一个Activity被暂停和终止(即使它在后面依然可见而不想终止)时,另一个Activity就会被创建。在这种情况下,Activity共...

长平狐
2012/10/16
34
0
android SQLite使用SQLiteOpenHelper类对数据库进行操作

一、 SQLite介绍 SQLite是android内置的一个很小的关系型数据库。 SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息。 博客中有一篇有稍微详细一点的介绍,大家可以去看...

hosealee
2013/06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C# 视频多人脸识别的实现过程

整个项目是用虹软技术完成开发 上一篇内容的调整,提交到git了,https://github.com/catzhou2002/ArcFaceDemo 基本思路如下: 一、识别线程 1.获取当前图片 2.识别当前图片的人脸位置,并将结...

是哇兴哥棒棒哒
19分钟前
1
0
Spring Cloud Eureka 你还在让它裸奔吗??

前些天栈长在微信公众号Java技术栈分享了 Spring Cloud Eureka 最新版 实现注册中心的实战教程:Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!,成功进入 Eureka 控制台页面。 ...

Java技术栈
36分钟前
1
0
linux gyp ERR! stack Error: EACCES: permission denied, mkdir ‘xxx’

在使用linux npm install的出现这个错误了,百度了下,没有权限加个参数即可 npm install --unsafe-perm

朝如青丝暮成雪
37分钟前
1
0
使用kubeadm 搭建K8s集群

1. 参考官网 https://kubernetes.io/docs/setup/independent/install-kubeadm/

whhbb
今天
2
0
Dubbo 3.0 !提升不止一点点!

Dubbo 自 2011 年 10 月 27 日开源后,已被许多非阿里系的公司使用,其中既有当当网、网易考拉等互联网公司,也不乏中国人寿、青岛海尔等大型传统企业。 自去年 12 月开始,Dubbo 3.0 便已正...

编程SHA
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部