Andriod开发——SQlite数据库的学习

SQlite是一个轻量级的数据库,它最初是为嵌入式设计的,占用资源非常少,在内存中只需要几百KB的存储空间。SQlite是遵守ACID关联式的数据库管理系统。它没有服务进程,通过文件保存数据,该文件是跨平台的,可以放在其他平台上使用。

Android SDK 为SQlite提供了一系列的数据库进行操作的类和接口,下面做一些简单的介绍:

1、SQLiteOpenHelper类是主要用于创建数据库和数据库版本更新。

2、SQLiteDatabase类是一个数据库访问类,该类封装了一系列数据库操作的API,可以对数据库进行增、删、改、查操作。

3、Cursor接口是一个游标接口,在数据库操作中作为返回值,相当于结果集ResultSet。

前面介绍了一些SDK提供的API,接下来介绍了一些具体的使用方法。

创建SQlite数据库需要创建一个类继承SQLiteOpenHelper,重写onCreate()方法,并在该方法中执行创建数据库的命令。具体代码如下所示:

public class PersonSQLiteOpenHelper extends SQLiteOpenHelper{
	public PersonSQLiteOpenHelper(Context context){
		super (context,"person,db",null,5);
	}
	public void onCreate(SQLiteDatabase db){//初始化数据库的表结构,执行一条建表的SQL语句
		db.execSQL("create table person(id integer primary key antoincrement,"+"name archer(20),"+"number varchar(20))");
	}
	public void onUpgrade(SQLiteDatabase  db,int oldVersion,int new newVersion){//当数据库版本号增加时调用
		db.execSQL("alter table person add account varchar(20)");
	}
}

上述代码中创建数据库表的SQL语句被定义在onCreate()方法中,当数据库第一次被创建时会自动调用该方法,并执行方法中的SQL语句。当数据库版本号增加时会调用onUpgrade()方法,如果版本号不增加,则不会被调用。

在person表中插入一条数据,具体操作如下:

public long add(String name,String number){
	SQLiteDatabase db=helper.getWritableDatabase();//拿到一个读写的对象
	ContentValue values = new ContentValues();//将各种参数名和列添加到ContentValue对象里面
	values.put("name",name);
	values.put("number",number);
	long id =db.insert("person",null,values);//插入数据
	db.close();//关闭数据库
	return id;
}

上述代码中需要注意的是,第五行使用ContentValues类放置参数。它的底层是用Map集合实现的。key表示数据插入的列名,value表示插入数据的值。除了insert()方法外,还可以使用execSQL()方法实现功能。

修改数据需要使用到update()方法:

public int update(String name,String number){
	SQLiteDatabase db=helper.getWritableDatabase();//拿到一个读写的对象
	ContentValue values = new ContentValues();//将各种参数名和列添加到ContentValue对象里面
	values.put("number",new number);//将参数以key,value的形式添加进去
	int number=db.update("person",value,"name=?",new String[]{name});//修改数据
	db.close();//关闭数据库
	return number;
}
删除数据需要用到delete()方法,操作代码如下:

public int delete(String name){
	SQLiteDatabase db=helper.getWritableDatabase();//拿到一个读写的对象
	int number=db.delete("per son",value,"name=?",new String[]{name});//修改数据
	db.close();//关闭数据库
	return number;
}

在删除数据的时候,不需要使用ContentValues来添加参数,而使用一个一个字符串和一个字符串数组来添加参数名和参数值。

查询一条数据时,需要用到rawQuery()方法或query(),代码如下:

public boolean find(String name){
	SQLiteDatabase db=helper.getWritableDatabase();//拿到一个读写的对象
	//查询数据库的操作 参数1:表名,参数2:查询的列名,参数3:查询条件,参数4:查询参数值,参数5:分组条件,参数6:having条件,参数7:排序方式
	Cursor cursor = db.query("person",null,"name=?",new String[]{name},null,null,null);
        boolean result = cursor.moveToNext();
        cursor.close();//关闭游标
	db.close();//关闭数据库
	return result;
}

而rawQuery()方法的使用如下:

Cursor cursor =db.rawQuery("select * from person where name=?",new String[]{name});
与前面增删改的操作不同的是,前面三个都可以用execSQL()方法执行SQL语句,而这里使用的是rawQuery()。这是因为查询数据库会返回一个结果集Cursor,而execSQL()没有返回值。

注意:在使用完SQLiteDatabase对象后一定要关闭,否则数据库会一直连接,不断消耗内存,并且报出数据库未关闭的异常,当系统内存不足时会获取不到SQLiteDatabase对象。Cursor对象使用完后也要及时关闭,否则会造成内存泄露。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常好用的SQLiteSpy 1.8.16 免费正式版(内附有一做好的DB,大家可以马上看下效果)。网上看到的,整理了下,共享给大家! 希望有用! SQLiteSpy是一个快速和紧凑的图形用户界面的SQLite数据库管理软件。它可以读取sqlite3文件并执行SQL。图形用户界面使得它很容易分析和操纵sqlite3的数据库。 注意:SQLiteSpy是免费供个人和教育用途,SQLiteSpy主要特点: 1、数据库一览:树状显示所有的架构,包括表,列,索引和触发器在数据库中包含的项目。按F5更新架构树,双击一个表或视图来显示它的数据,使用常用的命令的上下文菜单。 2、网格单元格编辑:表格单元格中编辑,显示一个表通过树状架构,选择一个单元格,然后按F2键调用编辑器。然后修改并确认您的更改写回到表里。 3、数据类型显示:本机的SQL数据类型显示不同的背景颜色来帮助检测类型错误。类型错误可能导致性能下降或错误的SELECT结果集,防止NULL值与空字符串混淆。 4、完全的Unicode: SQLiteSpy具有完全支持SQLite的Unicode的能力。数据显示和输入是完全实现为Unicode,包括SQL命令。 5、多个SQL编辑:现代标签是用来编辑和显示的查询语句和结果比较容易多个SQL查询。 SQL查询执行输入或加载到SQL他们编辑。然后按F9键运行该查询,或Ctrl + F9来运行当前行或选择只。 6、时间测量: SQL执行的时间自动测量和显示,以帮助优化查询。 7、正则表达式:在SQL关键字regexp是支持,并增加了完整的Perl的正则表达式语法5.10 SQLiteSpy。的实施,实现了利用DIRegEx库。 8、数学SQL函数:下面的SQL函数可用数学除了SQLite的默认:ACOS(), ASIN(), ATAN(), ATAN(), ATAN2(), CEIL(), CEILING(), COS(), COT(), DEGREES(), EXP(), FLOOR(), LN(), LOG(), LOG(), LOG2(), LOG10(), MOD(), PI(), POW(), RADIANS(), SIGN(), SIN(), SQRT(), TAN(), TRUNCATE(). 9、数据压缩:压缩的SQL函数()适用的zlib的紧缩到任何文本或BLOB值。 10、紧凑型结果储存:使用内部数据存储机制,以达到最佳的兼容SQLite的原生数据类型。因此,SQLiteSpy使用远低于其它的SQLite管理内存和更有效地处理大量的表。 11、内建的SQLite引擎: SQLiteSpy已建成一个单一的应用程序文件与SQLite数据库引擎可执行文件。不需要部署任何DLL文件,这使得SQLiteSpy更易于部署。 12、加密支持: SQLiteSpy可以阅读和修改加密的数据库文件由DISQLite3产生。 DISQLite3实现了自己的母语AES加密。这为不符合商业SQLite的加密扩展(SSE)的或任何其他第三方的实施提供兼容。 13、易安装和卸载:要运行SQLiteSpy,只需解压SQLiteSpy.exe文件到任何目录和执行文件。不需要安装。刚开始时,该程序创建一个文件SQLiteSpy.db3(1 sqlite3的数据库)来存储的和设置。它不写任何其他文件或注册表。卸载一样只是简单的删除两个文件:应用程序的可执行文件和数据库文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值