android中sqlite的使用(一)

来源:互联网 发布:阿里云 香港机房 被墙 编辑:程序博客网 时间:2024/06/05 22:36

Android中Sqlite的使用

1 Sqlite的简介

Sqlite是一种非常流行的嵌入式数据库,在android设备与ios设备中都存在,它支持sql语言,消耗的内存低、性能高。Sqlite由sql编译器、内核、后端以及福建,sqlite采用虚拟机与虚拟数据库引擎,使其修改、扩展更加方便。

Sqlite与其他主要的数据库没有什么区别,主要是速度快,同时android对sqlite具有良好的支持,sqlite与其他数据库最主要的区别主要体现在数据类型上,在创建数据表时为列指定特有的数据类型,但是你可以将任何类型的数据放入该列中,在插入数据时,如果是属于该列的数据类型,则直接插入,如果不属于该列的数据类型,则将其转换为该数据类型后再插入。即称之为“弱类型”。

2 在android程序中使用sqlite

Android设备不自定提供数据库,如果需要在自己的应用程序中使用数据库,必须自己创建数据库,并创建表、索引、填充数据等。在使用中android提供了SQLiteOpenHelper用于创建数据库、创建表等,其中封装了创建与更新数据库的逻辑。代码如下:

package com.example.utlities;

 

import android.content.Context;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.database.sqlite.SQLiteDatabase.CursorFactory;

importandroid.database.sqlite.SQLiteOpenHelper;

 

public class SqliteHelper extendsSQLiteOpenHelper {

 

       /**

        *

        * @param context 活动对象,如activity、service等

        * @param name 数据库名称

        * @param factory 游标工厂,通常为null

        * @param version 数据库版本

        */

       publicSqliteHelper(Context context, String name, CursorFactory factory,

                     intversion) {

              super(context,name, factory, version);

       }

 

       @Override

       publicvoid onCreate(SQLiteDatabase db) {

              //在数据库创建成功后,创建表视图等操作

       }

 

       @Override

       publicvoid onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

              //用于升级数据库

       }

 

       @Override

       publicvoid onOpen(SQLiteDatabase db) {

              super.onOpen(db);

              //每次成功打开数据库后被执行

       }

 

      

}

以下具体介绍在sqlite中如何实现CRUD操作:

2.1 在数据库创建成功后如何获取数据库的实例

通过getReadableDatabase()或getWritableDatabase()获取到SqliteDatabase的实例。代码随后附上。

2.2 创建sql表

创建表时需要调用executeSQL(Stringsql)函数,该函数不具有返回值。

2.3 插入数据

在sqlite中插入数据有两种方式,第一是采用executeSQL(String sql)的方式,另外一种是采用ContentValues与数据库实例提供的insert()函数。

2.4 更新数据

同插入数据一样,具有两种方式,分别为executeSQL(Stringsql)与数据库实例提供的update()函数。

2.5 查询数据

同前者一样,分别可以通过rawQuery(Stringsql)与数据库实例提供的query()函数。

2.6 删除数据

直接调用executeSQL(Stringsql),传入delete语句即可。

 

以上实例部分代码如下:

package com.example.utlities;

 

import android.content.Context;

importandroid.database.sqlite.SQLiteDatabase;

 

public class SqliteService {

       privatestatic final int VERSION = 0;

       privateSqliteHelper helper;

       privatestatic SqliteService service;

       privateSqliteService(Context context) {

              this.helper= new SqliteHelper(context, "eKontrol", null, VERSION);

       }

      

       publicSqliteService getInstance(Context context) {

              if(service == null) {

                     service= new SqliteService(context);

              }

              returnservice;

       }

      

       privateSQLiteDatabase getReadableDatabase() {

              SQLiteDatabasedb = null;

              if(this.helper != null) {

                     db= this.helper.getReadableDatabase();

              }

              returndb;

       }

      

       privateSQLiteDatabase getWritableDatabase() {

              SQLiteDatabasedb = null;

              if(this.helper != null) {

                     db= this.helper.getWritableDatabase();

              }

              returndb;

       }

       /**

        * 传入创建语句,如CREATE TABLE [USER](Id INTEGER PRIMARY KEY AUTOINCREMENT,NAMEVARCHAR(20))

        * @param sql

        */

       publicvoid createSql(String sql) {

              SQLiteDatabasedb = this.getWritableDatabase();

              db.execSQL(sql);

       }

       /**

        * 传入删除语句,如DELETE FROM [USER] WHERE Id = ?

        * @param sql

        */

       publicvoid deleteSql(String sql) {

              SQLiteDatabasedb = this.getWritableDatabase();

              db.execSQL(sql);

       }

      

      

}

其实关于这方面的实例网上很多,在此我只是作为个人笔记记录下来,方便以后查阅。


原创粉丝点击