Android: SQLite的使用

原创 by Zoe.zhang (《Android第一行代码阅读笔记》)

  • Android 系统内置了数据库,SQLite是一款轻量级的关系型数据库,运算速度快,占用的资源少,通常只需要几百K的内存,因此很适合用在移动设备上。
  • SQLite 不仅支持基本的SQL语法,同时遵循数据库的ACID事务,相比MySQL等关系型数据库要简单很多。(5种关系型数据库比较
  • SQLite 是轻量级的数据库,其设计目标是嵌入式,SQLite不是一个独立的进程,而是作为程序的一部分,应用程序由编程语言内的API直接调用SQLite,这样可以有效得减少数据库访问延迟。SQLite将整个数据库作为一个单独的,可跨平台的文件存储在主机中;
  • SQLite的写操作智能串行进行(写数据时给数据库加锁),SQLite的读操作可以多任务同时进行。
  • SQLite是一个自给自足的,无服务器(不需要单独的服务器进程)轻量级的数据库,使用ANSI-C编写,并提供了简单和易于使用的API。
  • 相关参考博客:
    Android 数据库开发(一)SQLite3概述
    Android SQLite (三 ) 全面详解(一)
    android之存储篇_SQLite数据库_让你彻底学会SQLite的使用
    Android SQLite详解

0. SQLiteOpenHelper 抽象类

  • Android 提供了一个SQLiteOpenHelper帮助类,这是一个抽象类,里面我们需要重写两个抽象方法 onCreate() 和onUpgrade(), 在这两个函数里实现创建和升级数据库的逻辑。
  • SQLiteOpenHelper有两个构造函数,我们一般使用参数较少的那个构造函数,该方法接收四个参数分别是:(Context,数据库名,允许返回一个自定义cursor,一般传入null,当前数据版本号)。
  • 在使用Android 的SQLite之前,需要对SQL基本语句有一定的了解。SQLite的数据类型相对来说很简单,integer表示整型,real表示浮点型,text表示文本类型,blob表示二进制型 等,我们通常需要在代码中执行SQL语句才能完成建表操作,如下例所示,我们通常将建表语句定义成一个字符串常量
//新建MyDatabaseHelper
public class MyDatabaseHelper extends SQLiteOpenHelper{
	
	public static final String CREATE_BOOK = "create table BOOK("
		+ "id integer primary key autoincrement,"  //逗号 primary key 设为主键,关键字autoincrement 表示自增长
		+ "author text,"
		+ "price real,"
		+ "pages integer,"
		+ "name text)";
		
	private Context mContext;
	public MyDatabaseHelper(Context context,String name,CursorFactory factory,int version){
		super(context,name,factory,version);
		mContext = context;
	}
	
	//必须重写两个抽象方法
	@Override
	public void onCreate(SQLiteOpenHelper db){
		db.execSQL(CREATE_BOOK);  //执行建表语句
	}
	
	@Override
	public void onUpgrade(SQLiteOpenHelper db,int oldVersion,int newVersion){	
	}
}      

1.创建数据库

  • 数据库帮助类中有两个重要的创建数据库的实例方法:getReadableDatabase()和getwritableDatabase()方法,注意当数据库不可写入的时,使用getwritableDatabase()可能会出错;
  • 一般情况下,这两个实例的方法没有什么区别,都会检测数据库存放目录下是否有该表,如果没有则创建该表,如果存在则打开该表。
  • 数据库文件存放目录: /data/data/package name/databases/,可以使用File Explorer来查看,比较推荐是使用adb shell 进行查看。
    private MyDatabaseHelper dbhelper;
    
    dbhelper = new MyDatabaseHelper(this,"Bookstore.db",null,1)  // bookstore.db 表名
    //创建数据库表
    dbhelper.getWritableDatabase();

<\hahahhahah>

2.升级数据库

3.添加数据

4.更新数据

5.删除数据

6.查询数据

使用adb shell 对数据库和表的创建情况检查

  • adb是Android SDK中自带的一个调试工具,使用这个工具可以直接对连接在电脑上的Android设备或者模拟器 进行调试操作,它存放的位置是 SDK的platform-tool目录下,注意:如果想要在cmd命令行中使用adb工具,首先要把它的路径配置到环境变量中

  • 在cmd界面输入 adb shell, 会进入到Android设备的控制台,然后通过cd命令进入到:cd /data/data//databases/目录下,可以通过ls命令查看目录下的所有文件。

  • 通过sqlite命令打开数据库:sqlite3 bookstore.db

  • 此外,还有别的方法,可以将db文件push出来,然后再用相关sqlite软件打开,相对会更加直观。

posted @ 2017-06-23 22:34  安安zoe  阅读(235)  评论(0编辑  收藏  举报