zoukankan      html  css  js  c++  java
  • android学习笔记49——SQLite2

    使用SQLite工具

    位于Android SDK/tools-->sqlite3.exe,其是一个简单的SQLite数据库管理工具,类似于MySQL提供的命令行窗口。

    .....

    使用特定方法操作SQLite数据库

    如果开发者对于SQL语法不熟悉,没有使用过SQL,android的SQLiteDatabase为其提供了inset、delete、update、query语句来操作数据库。

    1.insert

    SQLiteDatabase insert方法签名为:long insert(String table,String nullColumnHack,ContentValues values),这个插入方法参数说明如下:

      table——表名称;

      nullColumnHack——代表强行插入null值的数据列的列名;

      ContentValues——代表一行记录的数据

    ContentValues类似于Map,其提供了put方法用于存放数据,put(Sting key,Xxx value)其中key代表列名;getAsXxx(String key)方法用于取出数据。

    例如:

    ContentValues values = new ContentValues();

    values.put("name",“孙悟空”);

    values.put("nickName","齐天大圣");

    //返回新添加记录的行号,该行号是一个内部值,与主键Id无关,发生错误返回-1

    long rowNum = db.insert("pesonInfo",null,values);

    注意:无论第三个参数values是否包含数据,执行insert()方法总会添加一条记录,如果第三个参数为空,会添加一条除主键之外其他字段都为null的记录。

    insert()的底层实际上依然是通过构造insert SQL语句来进行插入的,因此其生成的SQL语句总是如下所示的语句:

    //ContentValues里的key-value对的数量决定下面的key-value

    inset into <表名>(key1,key2,...) values(value1,value2...);

    此时,如果第三个参数为null或者其中key-value对的数量为0,生成的对应insert语句为:

      insert into <表名> values()

    2.使用update方法更新记录

     SQLiteDatabase的update方法的签名为update(String table,ContentValues values,String whereClause,String[] whereArgs);

    table——代表需要更新的表名称;

    values——代表需要更新的数据;

    whereClause——满足该whereClause子句的记录将会被更新,即更新条件;

    whereArgs——用于为第三个参数传入参数;

    该方法返回受此update语句影响的记录的条数。

    例如,需要更新主键大于20的数据==》

      ContentValues values = new ContentValues();

      values.put("name","猪八戒");

      int result = db.update("personInfo",values,"_id>?",new Integer[]{20});

    本质:update 表名 set key1=value1,keyn=valuen where whereClause。其中whereArgs用于为whereClause传参。

    3.使用delete方法删除记录

    SQLiteDatabase的delete方法签名:delete(String table,String whereClause,String[] whereArgs):

    table——代表需要删除的表名称;

    whereClause——满足该whereClause子句的记录将会被删除,即删除条件;

    whereArgs——用于为第三个参数传入参数;

    该方法返回受此delete语句影响的记录的条数。

    ==》int result = db.delete("personInfo","_id>?",new Integer[]{20});

    本质:delete table where whereClause。其中whereArgs用于为whereClause传参。

    4.使用query方法查询记录

    SQLiteDatabase的query方法的签名为:Cursor query(boolean distinct,String table,String[] columns,String selections,String selectionArgs,

    String groupby,String having,String orderby,String limit).

    distinct——指定是否除去重复记录;

    table——表名;

    columns——列;

    selections——查询子句 ,相当于select语句where关键字后面的部分,在条件子句中允许使用占位符?;

    selectionArgs——用于为selections子句中占位符传入参数值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会异常;

    groupby——用于控制分组;

    having——用于对分组进行过滤;

    orderby——用于排序;

    limit——用于进行分页;

    5.事务

    SQLiteDatabase中包含如下两种方法用于控制事务,如下:

    benginTransaction

    endTransaction

    SQLiteDatabase还提供了inTransaction用来判断当前上下文是否处于事务环境中;inTransaction(),存在返回true,否则false.

    注意:

    当程序执行endTransaction()时将会结束事务,那到底是提交事务,还是回滚?

    其取决于SQLiteDatabase是否调用了setTransactionSuccessful()来设置事务标志,如果程序事务执行中调用该方法设置了事务成功则提交事务;否则程序将会回滚事务。

    如下:

  • 相关阅读:
    Linux学习之网络基础
    C# 随笔
    最牛B的编码套路
    c++ Primer 第七章不熟悉知识点总结
    oracle求表的倒数二行数据
    c++ Primer 第六章不熟悉知识点总结
    c++ Primer 第五章不熟悉知识点总结
    c++ Primer 第四章不熟悉知识点总结
    c++ Primer 第三章不熟悉知识点总结
    骑驴找马
  • 原文地址:https://www.cnblogs.com/YYkun/p/5960977.html
Copyright © 2011-2022 走看看