Android 中SQLite 增删改查的方法介绍
2016-03-08 16:04
615 查看
1、使用insert方法插入记录
(其中key为数据列的列名) 方法用于存入数据、getAsXxx(String key)方法用于取出数据。
例如如下语句:
如果第三个 参数为空,会添加一条除主键之外其他字段值都为null的记录.
insert()方法的底层实际上依然是通过构造insert SQL语句来进行插入的,
因此它生成的SQL语句总是如下面的语句:
ContentValue里key-value对的数量决定了下面的
key-value对 insert into <表名>(key1,key2···) values(value1,value2···)
2、使用update方法更新记录
例如我们想更新person_inf表中所有主键大于20的人的人名, 可调用如下方法:
3、使用delet方法删除记录
例如我们想删除person_inf表中所有人名以“孙”开头的记录,可调用如下方法:
实际上delete方法底层对应的SQL语句如下:
当然,这个query()方法也并非完全一无是处:当应用程序需要进行“条件不确定” 的查询(即查询条件需要动态改变的查询)时,使用这个query方法可以避免手动拼接 SQL语句。
例如想要查出person_inf表中人名以“孙”开头的记录,可使用如下语句:
<span style="font-size:14px;"> long insert(String table, //代表想插入数据的表名 String nullColumnHack, //代表强行插入null值的数据列的列名。当valus参数为 //null或不包含任何key-value对时该参数有效。 ContentValues values) //代表一行记录的数据 </span>insert方法插入的一行记录使用ContentValues存放,ContentValues 类似于Map,它提供了put(String key,Xxx value)
(其中key为数据列的列名) 方法用于存入数据、getAsXxx(String key)方法用于取出数据。
例如如下语句:
<span style="font-size:14px;">ContentValues values = new ContentValues(); values.put("name","孙悟空"); values.put("age", 500); //返回新添记录的行号,该行号是一个内部直, //与主键id无关,发生错误返回-1 long rowid = db.insert("person_inf", null, values);</span>不管第三个参数是否包含数据,执行insert()方法总会添加一条记录,
如果第三个 参数为空,会添加一条除主键之外其他字段值都为null的记录.
insert()方法的底层实际上依然是通过构造insert SQL语句来进行插入的,
因此它生成的SQL语句总是如下面的语句:
ContentValue里key-value对的数量决定了下面的
key-value对 insert into <表名>(key1,key2···) values(value1,value2···)
2、使用update方法更新记录
<span style="font-size:14px;">update(String table, //代表想更新数据的表名 ContentValues values,//代表想更新的数据 String whereClause, //满足该whereClause子句的记录会被更新 String[] whereArgs); //用于为whereClause子句传入参数</span>该方法返回受此update语句影响的记录的条数
例如我们想更新person_inf表中所有主键大于20的人的人名, 可调用如下方法:
<span style="font-size:14px;">ContentValues values = new ContentValues(); //存放更新后的人名 values.put("name", "新人名"); int result = db.update("person_inf",values,"_id > ?",new Integer[]{20});</span>实际上update方法底层对应的SQL语句如下:
<span style="font-size:14px;">update<table> set key1=value1,key2=value2... where <whereCluase></span>其中whereArgs参数用于向whereClause中传入参数
3、使用delet方法删除记录
<span style="font-size:14px;"> delete(String table, //代表想要删除的表名 String whereClause,//满足whereClause子句的记录将会被删除 String[] whereArgs)//用于为whereClause子句传入参数</span>该方法返回受此delete语句影响的记录的条数
例如我们想删除person_inf表中所有人名以“孙”开头的记录,可调用如下方法:
<span style="font-size:14px;"> int result = db.delete("person_inf","person_name like ?",new String[]{"孙_"}); </span>
实际上delete方法底层对应的SQL语句如下:
delete<table> where <whereClause>4、使用query方法查询记录
<span style="font-size:14px;">Cursor query(boolean distinct, //指定是否去除重复记录 String table, //执行查询数据的表名 String[] columns, //要查询出来的列名,相当于select语句select关键字后面的部分 String whereClause, //查询条件子句,相当于select语句where关键字后面的部分, //在条件子句中允许使用占位符"?" String[] selectionArgs,//用于为whereClause子句中占位符传入参数 //值在数组中的位置与占位符在数组中的位置必须 //一致,否则就会有异常 String groupBy, //用于控制分组。相当于select语句group by //关键字后面的部分 String having, //用于对分组进行过滤。相对于select语句 //having关键字后面的部分 String orderBy, //用于对记录进行.相对于select语句 //order by关键字后面的部分。 String limit //limit:用于进行分页,相对于select语句 //limit关键字后面的部分。 );</span>我忍不住想要表达对这个方法的不满,花时间理解这个方法中各个参数设置 的时间还不如去掌握这条select语句的语法格式了。
当然,这个query()方法也并非完全一无是处:当应用程序需要进行“条件不确定” 的查询(即查询条件需要动态改变的查询)时,使用这个query方法可以避免手动拼接 SQL语句。
例如想要查出person_inf表中人名以“孙”开头的记录,可使用如下语句:
Cursor cursor = db.query( "person_inf", new String[]{"_id,name,age"}, "name like ?", new String[]{"孙%"}, null, null, "personid desc", "5", "10");
相关文章推荐
- The project is using an unsupported version of the Android Gradle plug-in
- Android图片资源获取原则
- Android中Animation动画的介绍及用法
- Androidz中DisplayMetrics类
- 深入理解Android中的Handler异步通信机制
- 【SettingsProvider】修改系统初始化时间与日期的格式
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
- Android工程师学RxJava(一):入门
- Android截图命令screencap
- 定制替换Android桌面(home screen) Launcher
- 解决Android二维码扫描ZXing竖屏拉伸变长闪退扫描区域小等问题
- Android中图像变换Matrix的原理应用
- Android的AsyncTask原理和配置
- Android版本和API Level对应关系
- #Android学习#下拉刷新SwipeRefreshLayout
- Android Studio新手全然指引
- Android之Fragment
- 第一个自定义view,折线图
- Android 逐帧动画
- android--屏幕旋转方法总结