Android SQLite分析

来源:互联网 发布:acs数据库官网 编辑:程序博客网 时间:2024/06/06 23:58

说到SQLite,无论C++、Java程序员还是其他的非主流程序员,应该都听说过它,可见其非常流行。SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使用,而且被其他的公司广泛使用,比如说:Adobe,具体SQLite的介绍可以到其官方网站浏览。

在学习Android SQLite前,必须对SQL语句有很深入的了解(如果忘记了,利用这次机会好好复习下)。关于数据库、表的创建等基础知识,由于篇幅有限就不在此详细说明,主要说明数据库的4大基本操作:添加(insert)、删除(delete)、查询(query)、修改(update),这是在学习Android SQLite的过程中最为关注的部分。除了这4大操作以外,我们还需要注意的地方就是:获取查询结果的记录集(Recordset)。

Android SQLite分析

 <转>http://www.moandroid.com/?p=112

 

等有了这些基本概念,再来学习Android SQLite,从Android SDK中摘要如下:

SQLite-DB

首先关注到的是SQLiteDatabase类,在Android SDK中看其详细说明,其主要接口如下:

返回值函数原型longinsert(String table, String nullColumnHack, ContentValues values)Convenience method for inserting a row into the database.Intdelete(String table, String whereClause, String[] whereArgs)Convenience method for deleting rows in the database.Cursorquery(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)Query the given table, returning a Cursor over the result set.Intupdate(String table, ContentValues values, String whereClause, String[] whereArgs)Convenience method for updating rows in the database.

看到这些是不是感到似曾相识了?不错,这就是数据库的4大基本操作:添加(insert)、删除(delete)、查询(query)、修改(update)。感觉轻松很多了,再仔细看下这些函数的参数,发现很多参数都是按照SQL语句定义的,

例如:select * from p_employee  where id <>’9999′   order by id asc

需要额外说明2个数据结构: ContentValues,Cursor;

ContentValues就相当于C++中的map[(String key, Integer value)],其主要接口包括put(),get()。再结合insert操作的主要目的:按照表中数据段将对应的数据项写入到表中,就可以看出来ContentValues主要是存放表中每个表的数据段,以及其对应的值。

Cursor也就是前面说的:查询结果的记录集。从记录集的特征可以想到其包含的操作应该有:MoveFirst()、MoveLast()、MoveNext()、Move()、IsLast()、GetColumns()等,而且它还是个抽象类[abstract class],SQLiteCursor就是其具体的实现。

关于SQLiteDatabase类,其他值得关注的函数是:Create()、execSQL()。至于其他的函数,比如beginTransaction(),endTransaction()等关于数据库同步操作的函数,就只有在使用的过程中深入了解。

额外补充说明

最后值得一提的是:一个很好的辅助类SQLiteOpenHelper,其简化了数据库的操作。按照Android SDK文档中的说明,也可以通过继承此类、改写其接口的方法来实现对数据库的操作,SQLiteOpenHelper,其主要接口如下:
SQlite-Helper

仔细分析其说明,发现这个类主要是创建一个数据库,并对数据库的版本进行管理。当在程序中调用这个类的方法getWritableDatabase()或者getReadableDatabase()方法的时候,如果当时没有数据库,那么Android系统就会自动创建一个数据数据库。

其他辅助说明

  • 所有的数据库文件存放在手机中的/data/data/package_name/databases路径下。最为重要的一点是:在Android中,所有的应用软件的数据(包括文件、数据库)为该应用软件所私有的,如果需要在不同的应用中共享数据,必须使用ContentProvider实现,一个ContentProvider类实现了一组标准的方法接口,从而能够让其他的应用保存或读取此ContentProvider的各种数据类型。
  • 为了方便测试,如何查看SQLite数据库的内容?使用Android SDK提供的工具:sqlite3.exe。这是一个命令行实用工具,列举主要使用的命令如下:查看表结构 sqlite3 “path”    .dump
    例如 G:/android/android-sdk-window/tools>sqlite3 30m.db3    .bump
    运行结构如下:BEGGIN TRANSACTION;
    CREATE TABLE [TmProgramm] ([index] INTEGER,[nID] INTEGER, [nChannelID] INTEGER,[strTitle] CHAR(255),
    [dwDuration] INTEGER, [strThumbNail] CHAR(1024),[strURL] CHAR(255),[strPathName] CHAR(255),
    [strAuthor] CHAR(255),[dwSize] INTEGER,[State] INTEGER,[Percent] INTEGER,
    [strConverted] CHAR(255),[dwVideoType] INTEGER,[dwDownloadedBytes] INTEGER,[strTime] CHAR(255),
    [strHTTPVersion] CHAR(255),[strUserAgent] CHAR(255),[strReferer] CHAR(255));
    COMMIT;
    这就是当初创建数据库的语句
    查看表中的内容 sqlite3   “path” .schema
    具体运行结果可以下载数据库文件30m.db3 ,在命令行中运行就可以看到了
    其他帮助命令查询 sqlite3 .help

总结说明

通过对以上的学习,简单写了个数据库的例子(moandroid.database.zip),大家可以参考下。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高考志愿登录密码忘了怎么办 电视声音和画面不同步怎么办 苹果5s不能开机怎么办 红米手机老是闪退怎么办 苹果7plus打字卡怎么办 手机总是出现无响应怎么办 手机淘宝怎么打不开了怎么办 淘宝买东西卖家不同意退货怎么办 苹果自带浏览器不能上网怎么办 淘宝账号买不了东西怎么办 支付宝被限制登录怎么办 微信登录不上 钱怎么办 淘宝账号买家权限被限制怎么办 淘宝中店新品打不开怎么办 旺旺号被限制有退款怎么办 登陆微信收不到验证码怎么办 淘宝店注册成功后怎么办 充电宝掉进水里怎么办 空光盘读不出来怎么办 苹果8plus丢了怎么办 苹果8plus掉了怎么办 淘宝账户被限制使用怎么办 飞利浦电脑显示器黑屏怎么办打开 微信忘记密码手机号停用怎么办 淘宝账号登录密码忘记了怎么办 淘宝支付密码输错了怎么办 淘宝支付密码忘记了怎么办 淘宝货品上架后显示过期怎么办 被淘宝客监控了怎么办 助学贷款支付宝账号忘记怎么办 离婚支付宝的钱怎么办 扫码加载不出来怎么办 淘宝店铺被投诉售假怎么办 刚开的新店没人怎么办 淘宝访客量突然下降怎么办 支付宝账号封了怎么办 苹果x手机黑屏打不开怎么办 淘宝支付密码被锁定怎么办 淘宝支付密码锁定了怎么办 很抱歉手机淘宝停止运行怎么办 苹果手机桌面淘宝图标不见了怎么办