【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库
来源:互联网 发布:丹尼斯·约翰逊数据 编辑:程序博客网 时间:2024/05/17 03:59
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53316096
本文出自【DylanAndroid的博客】
- 【玩转SQLite系列】文章目录
- 【玩转SQLite系列】(一)初识SQLite,重拾sql语句
- 【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式
- 【玩转SQLite系列】(三)通过sql语句操作SQLite数据库
- 【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库
- 【玩转SQLite系列】(五)SQLite数据库优化
- 【玩转SQLite系列】(六)SQLite数据库应用案例实现历史搜索记录
- 【玩转SQLite系列】(七)SQLite数据库轻量级ORM操作数据库工具类
【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库
在上一篇【玩转SQLite系列】(三)通过sql语句操作SQLite数据库中介绍了用sql语句来操作SQLite数据库,那么,就需要用户必须要由很熟练的sql语句拼写和sql语法的熟练掌握。
其实,在Android里面提供了相应的API来操作数据库,即使对sql不是很熟练,也能够很好的去操作SQLite数据库。
这篇文章介绍一下通过Android提供的API对数据库的以下操作:1.创建表
2.删除表
3.新增数据
4.修改数据
5.删除数据
6.查询数据
0.创建或打开一个数据库
- 在SD卡的sqlite文件夹下创建和打开一个info.db数据库
File dataBaseFile = new File(Environment.getExternalStorageDirectory() + "/sqlite", Contacts.DATABASE_NAME); if (!dataBaseFile.getParentFile().exists()) { dataBaseFile.mkdirs(); } sqLiteDatabase = SQLiteDatabase.openOrCreateDatabase(dataBaseFile, null);
- 通过adb shell命令即可看到数据库文件。
cd storage/emulated/legacy/sqlite
1.创建表
/** * 1.创建数据表user * 表名 user * *数据表user表结构字段 * 主键:id * 名字:name * 年龄:age: * * @param v */ public void create(View v) { String sql = "CREATE TABLE " + "IF NOT EXISTS " + "user(" + "id Integer PRIMARY KEY AUTOINCREMENT," + "name varchar," + "age Integer)"; sqLiteDatabase.execSQL(sql); }
我们通过 (sqlite3 info2).命令打开数据库,再执行(.table)命令查看数据表
2.删除表格
/** * 2.删除数据表user * * @param v */ public void drop(View v) { String sql = "DROP TABLE " + "IF EXISTS " + "user"; sqLiteDatabase.execSQL(sql); }
3.插入(新增)数据
/** * 3.给user表中新增一条数据 * <p> * long insert(String table, String nullColumnHack, ContentValues values) * 第一个参数:数据库表名 * 第二个参数:当values参数为空或者里面没有内容的时候, * insert是会失败的(底层数据库不允许插入一个空行), * 为了防止这种情况,要在这里指定一个列名, * 到时候如果发现将要插入的行为空行时, * 就会将你指定的这个列名的值设为null,然后再向数据库中插入。 * 第三个参数:要插入的值 * 返回值:成功操作的行号,错误返回-1 * * @param v */ public void insert(View v) { String table = "user"; ContentValues contentValues = new ContentValues(); contentValues.put("name", "张三"); contentValues.put("age", 25); long num = sqLiteDatabase.insert(table, null, contentValues); if (num == -1) { Toast.makeText(this, "插入失败", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "成功插入到第" + num + "行", Toast.LENGTH_SHORT).show(); } }
我们通过select * from user;命令去查看一下数据库中内容
成功插入了两条数据
4.修改数据
/** * 4.修改user表中id为2的名字改成“李四” * <p> * int update(String table, ContentValues values, String whereClause, String[] whereArgs) * 第一个参数:表名 * 第二个参数:所要修改该的字段对应的值 * 第三个参数:修改的条件字段 * 第四个参数:修改的条件字段对应的值 * 返回值:影响的行数 * * @param v */ public void update(View v) { String table = "user"; ContentValues contentValues = new ContentValues(); contentValues.put("name", "李四"); String where = "id=2"; /** * 方式一 */ sqLiteDatabase.update(table, contentValues, where, null); /** * 方式二 */ where = "id=?"; String[] whereArgs = new String[]{"2"}; int num = sqLiteDatabase.update(table, contentValues, where, whereArgs); Toast.makeText(this, "修改了" + num + "行", Toast.LENGTH_SHORT).show(); }
我们来查看一下修改的结果
成功将id为2的姓名修改成了李四
5.删除数据
/** * 5.删除user表中id为2的记录 * <p> * int delete(String table, String whereClause, String[] whereArgs) * 第一个参数:删除的表名 * 第二个参数:修改的条件的字段 * 第三个参数:修改的条件字段对应的值 * 返回值:影响的行数 * * @param v */ public void delete(View v) { String table = "user"; String where = "id=2"; sqLiteDatabase.delete(table, where, null); where = "id=?"; String[] whereArgs = new String[]{"3"}; int num = sqLiteDatabase.delete(table, where, whereArgs); Toast.makeText(this, "删除了" + num + "行", Toast.LENGTH_SHORT).show(); }
我们来查看一下删除的结果
成功将id为2的数据删除
6.查询数据
/** * 6.查询数据 * <p> * Cursor query(String table, String[] columns, String selection,String[] selectionArgs, String groupBy, String having,String orderBy) * 第一个参数:表名 * 第二个参数:要查询的字段名 * 第三个参数:要查询的条件字段 * 第四个参数:要查询的条件字段对应的值 * 第五个参数:分组的字段 * 第六个参数:筛选的字段 * 第七个参数:排序的字段 * 返回值:游标 * * @param v */ public void query(View v) { String table = "user"; Cursor cursor = sqLiteDatabase.query(table, null, null, null, null, null, null); if (cursor == null) { return; } while (cursor.moveToNext()) { Log.d(Contacts.TAG, "id=" + cursor.getInt(0) + ",name=" + cursor.getString(1) + ",age=" + cursor.getInt(2)); } cursor.close(); }
我们通过Log来查看结果
2 0
- 【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库
- 【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库
- 【玩转SQLite系列】(三)通过sql语句操作SQLite数据库
- 【玩转SQLite系列】(三)通过sql语句操作SQLite数据库
- 【玩转SQLite系列】(五)SQLite数据库优化
- 【玩转SQLite系列】(五)SQLite数据库优化
- 玩转SQLite系列
- 【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式
- 通过adb shell操作android真机的SQLite数据库
- android Sqlite数据库的操作
- android sqlite数据库的操作
- android的sqlite数据库操作
- 使用SQLite中自带的API操作SQLite数据库
- Android中SQLite数据库操作(2)——使用SQLiteDatabase提供的方法操作数据库
- 【玩转SQLite系列】(七)打造轻量级ORM工具类SQLiteDbUtil操作数据库
- 【玩转SQLite系列】(七)打造轻量级ORM工具类SQLiteDbUtil操作数据库
- 【android】SQLite数据库的创建和操作、SQLite数据库可视化
- android sqlite数据库操作
- window开机 关机 记录日志
- HttpServlet源码
- dubbo 注解与spring 事务注解冲突完美解决方案
- velocity列表标签,velocity标签列表
- select2没有默认选择项
- 【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库
- Java封装、继承和多态
- solr简介
- 5-1 继承与派生
- 如何在 Linux 系统下检测硬盘上的坏道和坏块
- 2016.11.24
- 机器学习笔记四:线性回归回顾与logistic回归
- PHP之五_表单数据接收
- 原型设计的快速方法docker-compose