Android学习(27) -- 数据存储之SQLite数据库的增删改查
来源:互联网 发布:ipp6.0软件下载 编辑:程序博客网 时间:2024/05/19 00:11
数据库的增删改查
SQL语句
- insert into person (name, phone, money) values (‘张三’, ‘159874611’, 2000);
- delete from person where name = ‘李四’ and _id = 4;
- update person set money = 6000 where name = ‘李四’;
- select name, phone from person where name = ‘张三’;
执行SQL语句实现增删改查
//插入 db.execSQL("insert into person (name, phone, money) values (?, ?, ?);", new Object[]{"张三", 15987461, 75000}); //查找 Cursor cs = db.rawQuery("select _id, name, money from person where name = ?;", new String[]{"张三"});
* 测试方法执行前会调用此方法
protected void setUp() throws Exception { super.setUp(); // 获取虚拟上下文对象 oh = new MyOpenHelper(getContext(), "people.db", null, 1); }
使用api实现增删改查
插入
//以键值对的形式保存要存入数据库的数据ContentValues cv = new ContentValues();cv.put("name", "刘能");cv.put("phone", 1651646);cv.put("money", 3500);//返回值是改行的主键,如果出错返回-1long i = db.insert("person", null, cv);
删除
//返回值是删除的行数int i = db.delete("person", "_id = ? and name = ?", new String[]{"1", "张三"});
修改
ContentValues cv = new ContentValues();cv.put("money", 25000);int i = db.update("person", cv, "name = ?", new String[]{"赵四"});
查询
//arg1:要查询的字段//arg2:查询条件//arg3:填充查询条件的占位符Cursor cs = db.query("person", new String[]{"name", "money"}, "name = ?", new String[]{"张三"}, null, null, null);while(cs.moveToNext()){ // 获取指定列的索引值 String name = cs.getString(cs.getColumnIndex("name")); String money = cs.getString(cs.getColumnIndex("money")); System.out.println(name + ";" + money);}
事务
- 保证多条SQL语句要么同时成功,要么同时失败
- 最常见案例:银行转账
事务api
try { //开启事务 db.beginTransaction(); ........... //设置事务执行成功 db.setTransactionSuccessful();} finally{ //关闭事务 //如果此时已经设置事务执行成功,则sql语句生效,否则不生效 db.endTransaction();}
代码
public class TestCase extends AndroidTestCase { //此时测试框架还没有初始化完毕,没有虚拟上下文对象 // private MyOpenHelper oh = new MyOpenHelper(getContext(), "people.db", null, 1); private MyOpenHelper oh; private SQLiteDatabase db; //测试框架初始化完毕之后,在测试方法执行之前,此方法调用 @Override protected void setUp() throws Exception { super.setUp(); oh = new MyOpenHelper(getContext(), "people.db", null, 1); db = oh.getWritableDatabase(); } //测试方法执行完毕之后,此方法调用 @Override protected void tearDown() throws Exception { // TODO Auto-generated method stub super.tearDown(); db.close(); } public void insert(){ // db.execSQL("insert into person (name, salary, phone)values(?, ?, ?)", new Object[]{"老婆[1]", "13000", 138438}); // db.execSQL("insert into person (name, salary, phone)values(?, ?, ?)", new Object[]{"儿子", 14000, "13888"}); db.execSQL("insert into person (name, salary, phone)values(?, ?, ?)", new Object[]{"小小", 14000, "13888"}); } public void delete(){ db.execSQL("delete from person where name = ?", new Object[]{"小小"}); } public void update(){ db.execSQL("update person set phone = ? where name = ?", new Object[]{186666, "儿子"}); } public void select(){ Cursor cursor = db.rawQuery("select name, salary from person", null); while(cursor.moveToNext()){ //通过列索引获取列的值 String name = cursor.getString(cursor.getColumnIndex("name")); String salary = cursor.getString(1); System.out.println(name + ";" + salary); } } public void insertApi(){ //把要插入的数据全部封装至ContentValues对象 ContentValues values = new ContentValues(); values.put("name", "小龙"); values.put("phone", "15999"); values.put("salary", 16000); db.insert("person", null, values); } public void deleteApi(){ int i = db.delete("person", "name = ? and _id = ?", new String[]{"儿子", "3"}); System.out.println(i); } public void updateApi(){ ContentValues values = new ContentValues(); values.put("salary", 26000); int i = db.update("person", values, "name = ?", new String[]{"小龙"}); System.out.println(i); } public void selectApi(){ Cursor cursor = db.query("person", null, null, null, null, null, null, null); while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); String phone = cursor.getString(cursor.getColumnIndex("phone")); String salary = cursor.getString(cursor.getColumnIndex("salary")); System.out.println(name + ";" + phone + ";" + salary); } } public void transaction(){ try{ //开启事务 db.beginTransaction(); ContentValues values = new ContentValues(); values.put("salary", 12000); db.update("person", values, "name = ?", new String[]{"小志"}); //清空 values.clear(); values.put("salary", 16000); db.update("person", values, "name = ?", new String[]{"小志的儿子"}); //int i = 3/0; //设置 事务执行成功 db.setTransactionSuccessful(); } finally{ //关闭事务,同时提交,如果已经设置事务执行成功,那么sql语句就生效了,反之,sql语句回滚 db.endTransaction(); } } }
0 0
- Android学习(27) -- 数据存储之SQLite数据库的增删改查
- Android数据存储(3)——SQLite数据库的操作_增删改查完整输出
- Android数据库的SQLite增删改查
- android SQLite数据库的增删改查
- android sqlite数据库的增删改查
- Android SQLite数据库的增删改查
- Android数据库Sqlite的增删改查
- Android学习中关于SQLite的一个小Demo(数据库的创建、数据的增删查改)
- 数据存储-SQLiteOpenHelper(SQLite数据库增删改查)
- Android数据存储方式——SQLite数据库的增删改查用法样例和注意事项.txt
- 数据存储--SQLite增删改查
- Android学习之使用SQLite实现简单的(CRUD)增删改查
- [Android] SQLite数据库之增删改查基础操作
- android开发之sqlite数据库增删改查
- [Android] SQLite数据库之增删改查基础操作
- iOS-->sqlite数据库,数据表创建,数据的增删改查
- android之数据库的增删改查
- sqlite数据库之增删改查
- 第四周项目四(2)-程序分析
- 西电网络赛 - C
- Linux---centos搭建git服务器
- linux文件权限详解
- CentOS7.0下用c语言编程输出mysql5.7数据库某张表中的数据到txt文件中
- Android学习(27) -- 数据存储之SQLite数据库的增删改查
- Mybatis 系列(2)—— 动态语句 及 Mybatis generator 的使用
- lamp安装
- 见证Android消息推送时刻--笔记---Socket即时通讯机制
- 旧键盘打字(20)
- 高精度乘法
- shell统计pv和uv、独立ip的方法
- 我的PHP留言板之旅
- 西电网络赛 - D