(4.1.29) Android 操作SQLite基本用法
来源:互联网 发布:淘宝好的精仿店 编辑:程序博客网 时间:2024/06/08 09:30
一.SQLiteDatabase的介绍
Android提供了创建和是用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。在Android的SDK目录下有sqlite3工具,我们可以利用它创建数据库、创建表和执行一些SQL语句。下面是SQLiteDatabase的常用方法。
SQLiteDatabase的常用方法
2、创建表
创建一张表的步骤很简单:
下面的代码创建了一张用户表,属性列为:id(主键并且自动增加)、sname(学生姓名)、snumber(学号)
3、插入数据
插入数据有两种方法:
①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,
参数1 表名称,
参数2 空列的默认值
参数3 ContentValues类型的一个封装了列名称和列值的Map;
②编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行
第一种方法的代码:
第二种方法的代码:
4、删除数据
删除数据也有两种方法:
①调用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法
参数1 表名称
参数2 删除条件
参数3 删除条件值数组
②编写删除SQL语句,调用SQLiteDatabase的execSQL()方法来执行删除。
第一种方法的代码:
第二种方法的代码:
5、修改数据
修改数据有两种方法:
①调用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法
参数1 表名称
参数2 跟行列ContentValues类型的键值对Key-Value
参数3 更新条件(where字句)
参数4 更新条件数组
②编写更新的SQL语句,调用SQLiteDatabase的execSQL执行更新。
第一种方法的代码:
第二种方法的代码:
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游标常用方法
下面就是用Cursor来查询数据库中的数据,具体代码如下:
7、删除指定表
编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行
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语句,增删改、DDL
execSQL(String sql, Object[] bindArgs)
执行一条SQL语句,这个方法支持使用占位符参数(?)
rawSQL(String sql)
执行一条SQL语句,查询
close()
关闭数据库
Google公司命名这些方法的名称都是非常形象的。例如openOrCreateDatabase,我们从字面英文含义就能看出这是个打开或创建数据库的方法。
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);
创建一张表的步骤很简单:
- 编写创建表的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);
- //另外一种方式
- //db.execSQL("insert into person(sname,snumber) values(?,?)", new Object[]{"xiaoming","01005"});
- }
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);
- ////cursor = sqLiteDatabase.rawQuery(sql, null);
- //判断游标是否为空
- if(cursor.moveToFirst() {
- //遍历游标
- for(int i=0;i<cursor.getCount();i++){
- cursor.move(i);
- //获得ID
- int id = cursor.getInt(0);
- //获得用户名
- String username=cursor.getString(1);
- //获得密码
- String password=cursor.getString(2);
- //输出用户信息 System.out.println(id+":"+sname+":"+snumber);
- }
- }
- }
7、删除指定表
编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行
- private void drop(SQLiteDatabase db){
- //删除表的SQL语句
- String sql ="DROP TABLE stu_table";
- //执行SQL
- db.execSQL(sql);
- }
0 0
- (4.1.29) Android 操作SQLite基本用法
- (4.1.29.1)Android 操作SQLite基本用法之SQLiteOpenHelper
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- Android 操作SQLite基本用法
- 高德地图报错:BaseMapView initWithFrame exception
- Hive表数据导入到Hbase
- Python 中的进程、线程、协程、同步、异步、回调
- [LeetCode]Balanced Binary Tree
- HDU 4533 威威猫系列故事――晒被子 (线段树)
- (4.1.29) Android 操作SQLite基本用法
- 对一些简单排序算法的效率比较
- 数据库操作为什么会出现 sqlite3:not found?
- HDOJ 1159(POJ 1458)Common Subsequence (最长公共子序列 LCS)
- log4j日志输出性能优化-缓存、异步
- 常用正则表达式
- UIScrollerView约束注意点
- NoSQL简介
- 线程开销