SQLite是一个轻量级的数据库,它的设计目标是嵌入式的,资源非常低。本文重点介绍SQLite在android中的使用和特点。感兴趣的朋友可以跟随边肖去看一看。
1.SQLite的特点
SQLite是一个轻量级的数据库,它的设计目标是嵌入式的,资源非常低。
SQLite没有服务器进程,通过一个文件保存数据,是跨平台的。
支持五种数据类型,null、integer、real、text和blob。其实SQLite也接受varchar、char、decimal等数据类型,只是在操作或保存时会转换成相应的五种数据类型。因此,可以在任何字段中保存各种类型的数据。
2.SQLite的使用
2.1数据库的创建
在android中,创建SQLite数据库非常简单。Android系统推荐使用SQLiteOpenHelper的子类来创建数据库,因此需要创建一个继承自SQLiteOpenHelper的类,并覆盖该类的onCreate和onUpgrade方法。
导入Android . content . context;
导入Android . database . SQLite . SQLite database;
导入Android . database . SQLite . sqliteopenhelper;
公共类DBHelper扩展SQLiteOpenHelper {
/**
*作为SQLiteOpenHelper子类的必备构造方法
* @param context上下文参数
* @param name数据库名称
* @param factory游标工厂,通常为空
* @param version数据库的版本
*/
public db helper(@ Nullable Context Context,@Nullable String name,@Nullable SQLiteDatabase。CursorFactory工厂,int版本){
超级(上下文、名称、工厂、版本);
}
/**
*首次创建数据库时调用此方法。
* @param db
*/
@覆盖
public void onCreate(SQLite database db){
//初始化数据库的表结构,执行SQL语句建立表。
db . exec SQL(' create table user(u _ id int not null primary key,u_name varchar(50) not null,age int)');
}
/**
*当数据库的版本号增加时调用。
* @param db
* @param旧版本
* @param newVersion
*/
@覆盖
public void on upgrade(SQLite database db,int oldVersion,int newVersion) {
}
}
2.2新增(insert)
public void insert(String name,int age){
//通过DBHelper类获取一个读写SQLiteDatabase对象
SQLiteDatabase db=db helper . getwritabledatabase();
//创建ContentValue设置参数
content values content values=new content values();
contentValues.put('name ',name);
contentValues.put('age ',年龄);
//插入数据
//insert方法参数1:要插入的表的名称
//insert方法参数2:如果发现要插入的行为空,则将该列名的值设置为null。
//插入方法参数3: contentvalue
long i=db.insert('user ',null,content values);
//释放连接
db . close();
}
2.3修改(update)
公共void更新(字符串名称,整数年龄){
//通过DBHelper类获取一个读写SQLiteDatabase对象
SQLiteDatabase db=db helper . getwritabledatabase();
//创建ContentValue设置参数
content values content values=new content values();
contentValues.put('age ',年龄);
//修改数据
//参数1:表名
//参数2:修改值
//参数3:修改条件(SQL where语句)
//Parameter 4:where clause语句中表示表达式的占位符参数列表。这些字符串将替换?在哪里条件下?
db.update('user ',contentValues,' name=?',新字符串[]{ name });
//释放连接
db . close();
}
2.4删除(delete)
公共void删除(长id) {
//通过DBHelper类获取一个读写SQLiteDatabase对象
SQLiteDatabase db=db helper . getwritabledatabase();
//参数1:表名
//参数2:删除条件(SQL语句)
//参数3:在修改的条件中注入参数,一个或多个
db.delete('user ',' u_id=?',新字符串[]{ id ' ' });
//释放连接
db。close();
}
2.5查询(query)
公共空的查询(){
//通过DBHelper类获取一个读写的SQLiteDatabase对象
SQLiteDatabase db=db helper。getwritabledatabase();
//参数1:表格名称
//参数2:列要查询出来的列名。相当于从表格中选择***项语句中的***部分
//参数3:选择查询条件字句,在条件子句允许使用占位符"?"表示条件值
//参数4:选择参数:对应于选择参数占位符的值
//参数5:分组依据相当于从分组依据表中选择***项.语句中.的部分
//参数6:拥有相当于从分组依据表中选择***项.拥有%%%语句中%%% 的部分
//参数7:排序依据:相当于选择* * *从?分组依据.具有%%%排序依据@语句中的@@ 部分,如:personid desc(按人降序)
Cursor cursor=db.query('user ',null,null,null,null,null,null);
//将游标移到开头
光标。移到第一个();
而(!cursor.isAfterLast()) { //游标只要不是在最后一行之后,就一直循环
int id=游标。getint(0);
字符串名称=光标。getstring(1);
//将游标移到下一行
光标。移到下一个();
}
db。close();
}
3.使用SQL语句进行数据库操作
//通过DBHelper类获取一个读写的SQLiteDatabase对象
SQLiteDatabase db=db helper。getwritabledatabase();
//插入
db.execSQL('insert into user (id,name,age) values(?)',新对象[]{1,'张三',18});
//更新
db.execSQL('update user set name=?其中id=?',新对象[]{ '张三',1});
//删除
db.execSQL('从id=1的用户中删除');
//查询
游标cursor=db。原始查询(' select * from user where id=?',新字符串[]{ ' 1 ' });
4.SQLite事务
SQLite数据库同样支持事务
事务操作后一定要使用endTransaction()方法关闭事务,当执行到endTransaction()时,首先会检查是否有事务执行成功标记,有则提交数据库,无则回滚数据
db helper db helper=新的db helper(主活动。this,' test.db ',null,0);
//通过DBHelper类获取一个读写的SQLiteDatabase对象
SQLiteDatabase db=db helper。getwritabledatabase();
//开始事务
db。开始事务();
尝试{
//标记数据库事务执行成功
db。settransactionsuccessful();
}catch(异常e){
Log.i('事务处理失败,e . getmessage());
}最后{
db。结束事务();//关闭事务
db。close();//关闭数据库
}
到此这篇关于机器人中SQLite使用及特点的文章就介绍到这了,更多相关机器人使用SQLite内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。