Android系统数据库编程学习日志

Android 完整地支持 sqlite数据库,而且一个APP不能访问其他APP的数据库。

1、查看AndroidAPI,看到有两个package与数据库相关:android.database 和android.database.sqlite。

android.database 用于与ContentProvider交互的;直接操作数据库的API位于 android.database.sqlite。

2、查看Dev Guide ->Data Storage这份文档。讲解了一些常用的存储数据的方法,不过对于直接操作数据库的内容只是略微提及,并没有详细讲解。

3、查看Android SDK中的 sqlite3这个工具的用法(可以在PC上试用一下这个软件)

4、到 sqlite 的官方网站逛一逛,网址http://www.sqlite.org。然后把它的参考手册下载回来,因为在开发的时候会用到。

手工操作一下数据库,熟悉一下sqlite3这个工具。

1、首先启动虚拟机或者将手机连接到PC,执行 adbshell,进入android的shell

2、执行 sqlite3命令(在andoid系统中执行,不是在PC端)。用真机执行的话需要root权限,建议在虚拟机中操作。

执行 sqlite3 命令的时候,可以带一个数据库的文件路径,例如

$ sqlite3/data/data/com.android.providers.media/database/internal.db。

如果你有Linux的系统,完全可以在PC上试用sqlite3,跟Android上面的sqlite3是差不多的。

3、进入了 sqlite3的终端,可以执行各种sqlite命令(提示:sqlite命令都是以句点符号开头,例如“.tables”列出所有表格,“.databases”列出所有数据库,“.help” 查看帮助,“.exit”退出)

4、在sqlite3的终端界面还可以执行SQL语句,例如CREATE TABLE, SELECT 等等。参考sqlite官网了解SQL语句的写法。

手工操作了一下数据库之后,然后就开始利用AndroidAPI编写访问数据库的Java程序。

大致了解一下android.database.sqlite包中的各个类的用途:

1、SQLiteCloseable抽象类,一般不直接用这个类(它主要是提供一个接口,提供了c lose()方法)

2、SQLiteCursor保存查询操作返回的结果,类似于Content Provider返回的Cursor。

3、SQLiteDatabase是访问sqlite数据库的最主要的类,提供了多个操作数据库的API(查询、插入、删除等)

4、SQLiteOpenHelper是为了简化数据库操作而引入的类,也很常用(对于这个类,根据API文档的描述,需要覆盖它的几个onXXX()回调函数,然后使用)

5、SQLiteProgram表示一次sqlite查询操作(这个类的作用是提供一个基类,供继承的,一般不用)

6、SQLiteQuery是一次查询,从SQLiteProgram继承而来。这个类要提供给SQLiteCursor才有用,它本身没什么用。

7、SQLiteQueryBuilder是用于构造SQLiteQuery的工厂类,通过这个类建立SQLiteQuery,再把SQLiteQuery传给SQLiteCursor,做查询操作。

Android系统数据库编程学习日志

8、SQLiteStatement表示一个提前编译好的SQL语句,而且这个语句只能返回一行一列数据,需要从SQLiteDatabase.compileStatement来创建(不要用构造函数创建),引入他的目的是为了复用。

典型开发步骤:

1、写一个类,继承SQLiteOpenHelper类,并实现它的回调函数。这个类的最主要作用就创建数据库,返回数据库调用接口:

[java] viewplaincopyprint?
  1. publicclassDictionaryOpenHelperextendsSQLiteOpenHelper{
  2. privatestaticfinalintDATABASE_VERSION=2;
  3. privatestaticfinalStringDICTIONARY_TABLE_NAME="dictionary";
  4. privatestaticfinalStringDICTIONARY_TABLE_CREATE=
  5. "CREATETABLE"+DICTIONARY_TABLE_NAME+"("+
  6. KEY_WORD+"TEXT,"+
  7. KEY_DEFINITION+"TEXT);";
  8. DictionaryOpenHelper(Contextcontext){
  9. super(context,DATABASE_NAME,null,DATABASE_VERSION);
  10. }
  11. @Override
  12. publicvoidonCreate(SQLiteDatabasedb){
  13. db.execSQL(DICTIONARY_TABLE_CREATE);
  14. }
  15. }
public class DictionaryOpenHelper extends SQLiteOpenHelper {    private static final int DATABASE_VERSION = 2;    private static final String DICTIONARY_TABLE_NAME = "dictionary";    private static final String DICTIONARY_TABLE_CREATE =                "CREATE TABLE " + DICTIONARY_TABLE_NAME + " (" +                KEY_WORD + " TEXT, " +                KEY_DEFINITION + " TEXT);";    DictionaryOpenHelper(Context context) {        super(context, DATABASE_NAME, null, DATABASE_VERSION);    }    @Override    public void onCreate(SQLiteDatabase db) {        db.execSQL(DICTIONARY_TABLE_CREATE);    }}

2、写好SQLiteOpenHelper子类之后,用构造函数实例化对象(用new运算符),即可访问数据库了。典型的访问数据库的代码如下:

[java] viewplaincopyprint?
  1. DictionaryOpenHelperhelper=newDictionOpenHelper(getApplicationContext());
  2. SQLiteDatabasedb=helper.getWritableDatabase();
  3. Stringdelete="DELETEFROM"+Dictionary.TABLE_NAME+
  4. "WHEREyear="+year+"ANDmonth="+month+";";
  5. db.execSQL(delete);
  6. db.close();
DictionaryOpenHelper helper = new DictionOpenHelper(getApplicationContext());SQLiteDatabase db = helper.getWritableDatabase();String delete = "DELETE FROM " + Dictionary.TABLE_NAME +        " WHERE year=" + year + " AND month=" + month +";";db.execSQL(delete);db.close();

创建 helper,调用 helper 的getReadableDatabase() / getWritableDatabase(),得到SQLiteDatabase(数据库接口),然后用这个对象提供的API对数据库进行查询、插入、删除等各种操作。

3、如果要对数据库做查询操作,就调用 SQLiteDatabase的 query() 函数,返回 Cursor 对象。

注意:

1、如果数据库要提供数据给 ContentProvider,那么需要包含一个字段,名称为 BaseColumn._ID。

2、我在做开发的时候,遇到的麻烦问题就是SQL字符串比较复杂,容易出错,把SQL传过去报错的话

不能马上发现错误。

http://blog.csdn.net/smfwuxiao/article/details/7213892

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/265573.html

更多阅读

Android系统SD卡分区图解教程 安卓系统sd卡分区

最近入手了一部HTC Magic,由于是刚从Symbian系统转到Android系统,还是稍有些不习惯。尤其是相对于Symbian系统来说,Android系统在安装软件的时候只能安装在手机内存,这就给本身内存就不是很大的机器带来了诸多不便。既然有不便,那就要想

Windows编程学习日志一

Windows子系统开关从今天起开始我的windows学习心得的日志,有兴趣的网友可以随时交流啊!Windows支持两种类型的应用程序,一种是图形界面的,简称GUI,另一种是控制台程序,简称CUI。GUI拥有前端界面,用户通过图形界面与操作系统进行交互,一般是

MIUI米柚 Android系统(版本) android 判断miui系统

米柚百科名片MIUI(米柚)是小米科技旗下基于Android系统深度优化、定制、开发的第三方手机操作系统极受手机发烧友欢迎的Android ROM,专为中国人习惯设计,全面改进原生体验。能够带给国内用户更为贴心的Android智能手机体验。从2010年8月

声明:《Android系统数据库编程学习日志》为网友奮鬦的屌纟分享!如侵犯到您的合法权益请联系我们删除