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使用详细教程
-
java.lang.IllegalArgumentException: View=DecorView@4b56afc[] not attached to window manager
使用Dialog的时候,没少出现下面这个报错 出现的原因:因为你的Dialog的生命周期比你的activity的生命周期要长 所以,出现这个bug的时候,请检查创建这个Dialog的context所属的Activity是不是已经结束了,而dialog还在显示。
-
JS数组添加不重复元素
push() 原生数组在末尾添加参数,返回一个新的数组
-
android.os.NetworkOnMainThreadException
在Android 4.0以上,网络连接不能放在主线程上,不然就会报错android.os.NetworkOnMainThreadException。但是4.0下版本可以不会报错。
-
关于Jsoup 伪装请求头
android爬虫工具,Jsoup。如何设置伪请求头部?
-
yarn如何全局安装命令以及和环境变量的关系
使用npm全局安装的yarn,需要配置环境变量,将 yarn bin的地址配置到用户变量内,然后重启命令行工具就可以了
-
You must call removeView() on the child's parent first解决办法
出现这样的情况最多是发生在recyclerView中,holder复用的过程中,多次添加view,第一次添加的时候view有了父类了,可能就是复用引起的。 我是发生在给recyclerView添加广告view的时候发生的。
-
阿里oss,plupload 在手机端无法上传
延迟uploader.refresh。 注意如果是隐藏状态下,要在出现上传按钮端时候操作这个事。
-
基于VCamera,仿微信录制短视频
vcamera.so这个确实挺好用,可定制性也挺高,但是确定也不小,需要引入的这个so包,10M啊。对于安装包苛刻的用户,这是致命啊。 我现在是抛弃他了。但是在这里还是记录一下用法吧。防止以后再用他。
-
MacOS升级后出现的 xcrun: error: invalid active developer path, missing xcrun 错误 解决办法 图文教程
MacOS升级后出现的 xcrun: error: invalid active developer path, missing xcrun 错误 解决办法 图文教程
-
mysql随机排序
首页热门栏目需要随机显示几条信息