Android 中SQLite 增删改查的方法介绍

1、使用insert方法插入记录

<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");


   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值