Android提供了创建和是用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。在Android的SDK目录下有sqlite3工具,我们可以利用它创建数据库、创建表和执行一些SQL语句。下面是SQLiteDatabase的常用方法。
SQLiteDatabase的常用方法
方法名称 方法表示含义
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory) 打开或创建数据库
insert(String table,String nullColumnHack,ContentValues values) 插入一条记录
delete(String table,String whereClause,String[] whereArgs) 删除一条记录
query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy) 查询一条记录
update(String table,ContentValues values,String whereClause,String[] whereArgs) 修改记录
execSQL(String sql) 执行一条SQL语句
close() 关闭数据库
1、打开或者创建数据库在Android 中使用SQLiteDatabase的静态方法openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)打开或者创建一个数据库。它会自动去检测是否存在这个数据库,如果存在则打开,不存在则创建一个数据库;创建成功则返回一个SQLiteDatabase对象,否则抛出异常FileNotFoundException。
下面是创建名为“stu.db”数据库的代码:
openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)
参数1 数据库创建的路径参数2 一般设置为null就可以了
db=SQLiteDatabase.openOrCreateDatabase(“/data/data/com.lingdududu.db/databases/stu.db”,null);
2、创建表创建一张表的步骤很简单:
编写创建表的SQL语句
调用SQLiteDatabase的execSQL()方法来执行SQL语句下面的代码创建了一张用户表,属性列为:id(主键并且自动增加)、sname(学生姓名)、snumber(学号)
private void createTable(SQLiteDatabase db){
//创建表SQL语句
String stu_table=”create table usertable(_id integer primary key autoincrement,sname text,snumber text)”;
//执行SQL语句
db.execSQL(stu_table);
}
3、插入数据
插入数据有两种方法:
①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,
参数1 表名称,
参数2 空列的默认值
参数3 ContentValues类型的一个封装了列名称和列值的Map;
②编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行
第一种方法的代码:private void insert(SQLiteDatabase db){
//实例化常量值
ContentValues cValue = new ContentValues();
//添加用户名
cValue.put(“sname”,”xiaoming”);
//添加密码
cValue.put(“snumber”,”01005”);
//调用insert()方法插入数据
db.insert(“stu_table”,null,cValue);
}
第二种方法的代码:private void insert(SQLiteDatabase db){
//插入数据SQL语句
String stu_sql=”insert into stu_table(sname,snumber) values(‘xiaoming’,’01005’)”;
//执行SQL语句
db.execSQL(sql);
}
4、删除数据删除数据也有两种方法:
①调用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法
参数1 表名称
参数2 删除条件
参数3 删除条件值数组②编写删除SQL语句,调用SQLiteDatabase的execSQL()方法来执行删除。
第一种方法的代码:
private void delete(SQLiteDatabase db) {
//删除条件
String whereClause = “id=?”;
//删除条件参数
String[] whereArgs = {String.valueOf(2)};
//执行删除
db.delete(“stu_table”,whereClause,whereArgs);
}
第二种方法的代码:private void delete(SQLiteDatabase db) {
//删除SQL语句
String sql = “delete from stu_table where _id = 6”;
//执行SQL语句
db.execSQL(sql);
}
5、修改数据修改数据有两种方法:
①调用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法
参数1 表名称
参数2 跟行列ContentValues类型的键值对Key-Value
参数3 更新条件(where字句)
参数4 更新条件数组②编写更新的SQL语句,调用SQLiteDatabase的execSQL执行更新。
第一种方法的代码:
private void update(SQLiteDatabase db) {
//实例化内容值 ContentValues values = new ContentValues();
//在values中添加内容
values.put(“snumber”,”101003”);
//修改条件
String whereClause = “id=?”;
//修改添加参数
String[] whereArgs={String.valuesOf(1)};
//修改
db.update(“usertable”,values,whereClause,whereArgs);
}
第二种方法的代码:private void update(SQLiteDatabase db){
//修改SQL语句
String sql = “update stu_table set snumber = 654321 where id = 1”;
//执行SQL
db.execSQL(sql);
}
6、查询数据在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。它提供了很多有关查询的方法,具体方法如下:
public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);
各个参数的意义说明:
参数table:表名称
参数columns:列名称数组
参数selection:条件字句,相当于where
参数selectionArgs:条件字句,参数数组
参数groupBy:分组列
参数having:分组条件
参数orderBy:排序列
参数limit:分页查询限制
参数Cursor:返回值,相当于结果集ResultSet
Cursor是一个游标接口,提供了遍历查询结果的方法,如移动指针方法move(),获得列值方法getString()等.
Cursor游标常用方法
方法名称 方法描述
getCount() 获得总的数据项数
isFirst() 判断是否第一条记录
isLast() 判断是否最后一条记录
moveToFirst() 移动到第一条记录
moveToLast() 移动到最后一条记录
move(int offset) 移动到指定记录
moveToNext() 移动到下一条记录
moveToPrevious() 移动到上一条记录
getColumnIndexOrThrow(String columnName) 根据列名称获得列索引
getInt(int columnIndex) 获得指定列索引的int类型值
getString(int columnIndex) 获得指定列缩影的String类型值下面就是用Cursor来查询数据库中的数据,具体代码如下:
private void query(SQLiteDatabase db) {
//查询获得游标
Cursor cursor = db.query (“usertable”,null,null,null,null,null,null);//判断游标是否为空
if(cursor.moveToFirst() {
//遍历游标
for(int i=0;i 以上是Android SQLiteDatabase使用详细教程的内容,更多 SQLiteDatabase Android 使用 教程 详细 的内容,请您使用右上方搜索功能获取相关信息。
Android SQLiteDatabase使用详细教程
-
ServletRequest获取token,获取header
把ServletRequest转化为HttpServletRequest,就好获得了
-
intellij,idea,git for windows一直占用,内存过高
fatal: Unable to create,git/index.lock': File exists.
-
consola 教程
consola 和 console 只差一个字母,并且它们都是控制器日志输出的好帮手。console 在某些方面,使用有些局限性。consola 是一个功能更丰富,更漂亮的控制台日志输出控件。今天我们一起来学习它的
-
AndroidStudio 多层级 Module 对 aar 引用问题
有个arr文件被放到Module A中引用,现在Module B又依赖了Module A,则在编译过程中会发生错误,Module B找不到aar文件。
-
nginx支持socket
安装nginx,stream模块默认不安装的,需要手动添加参数:–with-stream,根据自己系统版本选择nginx1.9或以上版本。
-
Java中List转换为数组,数组转List
List转换为Array可以这样处理,反过来,如果要将数组转成List怎么办呢
-
git合并时冲突<<<<<<< HEAD
head 到 =======里面的lalala是自己的commit的内容 =========到 >>>>>>里面的hehehe是下拉的内容
-
Java中数组怎么深度复制
有时候循环进行一些操作,放入list,发现,list中的数据都是一个数据,这就尴尬了,我们需要深度复制,才能解决这个问题。或者生成新的,也就是深度复制。
-
static inner class和非static inner class的实例化问题(can only instantiate non-static inner class...)
non-static inner class 需要持有外部类实例的引用,所以无法直接调用构造器创建,需要先构造外部类实例,然后通过外部类实例调用构造方法创建,如下:
-
spring post jackson的反序列化需要无参构造函数
JSON parse error: Cannot construct instance of `com.**` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.**` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (PushbackInputStream); line: 2, column: 2]] ———————————————— 版权声明:本文为CSDN博主「冰夏之夜影」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u011561335/article/details/91346777