Android中SQLite数据库知识点总结


本文整理自网络,侵删。

SQLite 数据库简介

SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本。它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需要占用几百kB的存储空间,这也是Android移动设备采用SQLite数据库的重要原因之一。

SQLite 是遵守ACID的关系型数据库管理系统。这里的ACID是指数据库事务正确执行的4个基本要素,即原子性(Atomicity)、致性 ( Consistency)、 隔离性( lolation). 持久性( Durabilily )。它能够支持Windows/Linux/UNIX等主流的操作系统,能够跟很多程序语言,例如Tcl、C#、PHP、 Java等相结合。比起Mysql、PostgreSQL 这两款开源数据库管理系统来讲,SQLite的处理速度更快。

SQLite 没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台中使用。并且在保存数据时,支持null(零) 、integer (整数)、real (浮点数字) 、text (字符串文本)和blob(二进制对象)5种数据类型。但实际上SQLite也接收varchar(n)、 char(n)、decimal(p,s)等数据类型,只不过在运算或保存时会转换成对应的5种数据类型。因此,可以将各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型。

SQLite 数据库创建

在Android系统中,创建SQLite数据库是非常简单的。Android系统推荐使用 SQLiteOpenHelper 的子类创建数据库,因此需要创建一个继承自SQLiteOpenHelper,并重写该类中的onCreate()方法和onUpgrade()方法即可。

为什么要使用SQLiteOpenHelper的子类呢,因为SQLiteOpenHelper为抽象类(abstract),必须使用其子类进行继承,同时还需要重写父类的抽象方法,onCreate()方法和onUpgrade()方法都是其父类中的抽象方法。

public class MyHelper extends SQLiteOpenHelper {
  @Override
  private static String DATABASE_NAME = "alan.db";
  private static int DATABASE_VERSION = 2;
  public MyHelper(Context context){
    super(context,DATABASE_NAME,null,DATABASE_VERSION);     //调用父类的构造方法
  }

  //数据库第一次被创建时调用该方法
  public void onCreate(SQLiteDatabase db){
    //初始化数据库的表结构,执行一条建表的SQL语句
    db.execSQL("CREATE TABLE IF NOT EXISTS person(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), price INTEGER);

  }
  //当数据库版本增加时调用
  public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
  
  }
}
//SQLiteOpenHelper类的构造函数有四个参数
//context代表上下文,name是数据库名字,factory是游标工厂,一般情况下为null值,version是数据库版本,软件在今后的升级中会用到。
public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) {
  this(context, name, factory, version, null);
}

SQLite 数据库使用

前面介绍了SQLite 数据库及如何创建数据库,接下来将针对SQLite数据库的增、删、改、查操作进行详细讲解。

一、SQLite 基本操作方法 一

1. 增加一条数据

下面以 alan.db 数据库中的person表为例,介绍如何使用 SQLiteDatabase对象的insert()方法向表中插入一条数据,示例代码如下。

public void insert(String name, String price){
  SQLiteDatabase db = myHelper.getWritableDatabase(); //获取可写入的 SQLiteDatabase 对象
  ContentValues values = new ContentValues();  //创建 ContentValues 对象 
  values.put("name",name);     //将数据添加到ContentValues对象
  values.put("price",price);
  long id = db.insert("person",null,values); //插入一条数据到person表 
  db.close();  //关闭数据库    
}

在上述代码中,通过getWritableDatabase()方 法得到SQLiteDatabase对象,然后获得ContentValues对象并将数据添加到ContentValues对象中,最后调用inser()方法将数据插入到person表中。

insert()方法接收3个参数,第一个参数是数据表的名称,第二个参数表示如果发现将要插入的行为空行时,会将这个列名的值设为null,第三个参数为ContentValues对象。ContentValues类类似于Map类,通过键值对的形式存入数据,这里的key表示插入数据的列名,value 表示要插入的数据。

需要注意的是,使用完SQLiteDatabase对象后定要调用close()方法关闭,否则数据库连接会一直存在,不断消耗内存,当系统内存不足时将获取不到SQLiteDatabase对象,并且会报出数据库未关闭异常。

2. 修改一条数据

阅读剩余部分

相关阅读 >>

python实现读取txt文件数据并存进内置数据库Sqlite3的方法

android学习笔记-保存数据到sql数据库中(saving data in sql databases)

.net数据库操作框架sqlsugar的简单入门

android中应用多进程的整理总结

android中操作Sqlite数据库快速入门教程

Sqlite如何迁移到mysql脚本的实例介绍

android将图片转换存到数据库再从数据库读取转换成图片实现代码

android登录注册功能 数据库Sqlite验证

c#查询sqlserver数据库并返回单个值的方法

Sqlite教程(五):数据库和事务

更多相关阅读请进入《Sqlite》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...