一、SQLiteOpenHelper类

  android 提供类SQLiteOpenHelper帮助用户简化对SQLite数据库的操作。该类是一个抽象类,必须用户自己实现并重写oncreate()和onUpGrade()方法;此外,还必须重写构造方法。构造方法包括上下文,数据库名称,版本等形参。

  SQLiteOpenHelper提供两个方法获取数据库:getWriteableDatabase()方法,和getReadableDatabase(),这两个方法都返回一个SQliteDatabase对象,如果该对象不存在就调用onCreate方法创建一个。

二、SQLiteDatabase

  获取到SQLiteDatabase后可以任意操纵数据库了,

  2.1 调用execSQL("xxx")直接执行SQL命令,例如:

    execSQL(“create table book(id integer primary key autouincrement, author text, price real,pages integer)”)创建一张名为book的表格。

    execSQL(" drop table if exists book")如果book表存在就删除它。

    insert(“book”,null ,contentValue),向book表中添加数据,数据由contentValue描述。contentValue 有很多put方法,接收一个键与对应的值,其中键为表中的列。

  2.2 向表中添加数据

    insert(“book”,null ,contentValue),向book表中添加数据,数据由contentValue描述。contentValue 有很多put方法,接收一个键与对应的值,其中键为表中的列。

  2.3 更新表中的数据

    updata("book","data","name = ?",new String(“the lost symbol”)),第一个参数指定要更新数据的表,第二个参数指定要更新的参数,对应列,第三个参数和第四个参数描述要删除的行。其中?是占位符,可以用地四个参数的内容指定其值。第三个参数相当于where。

  2.4 删除表中的数据

    delete("book","pages>?","500"),第一个参数对应操作的表,第二个和第三个参数描述要删除数据的行。

  2.5 查询数据

    SQLiteDatabase  提供一个query()方法对数据进行查询,不过query方法比较复杂。query主要包含以下参数:

      参数      对应SQL部分        描述

      table      from table_name     指定查询的表名

      columns       select column1 columns    指定查询的列名

      selection      where column=value         指定where的约束条件

      selection Args  -------------------    为where中的占位符提供具体的值

      groupBy    group by column     指定需要group by 的列

      having     having column=value   对group by 的结果进一步的约束

      orderBy    order by column1,column2指定查询结果的排序方式

    调用query()方法后将返回一个Cursor对象,查询到的所有数据都将从这个对象中取出。

    例如:

    Cursor cursor = db.query("book",null,null,null,null,null,null);
    if (cursor.moveToFirst()){
     do {
      String name = cursor.getString(cursor.getColumnIndex("name"));
      String author = cursor.getString(cursor.getColumnIndex("author"));
     int pages = cursor.getInt(cursor.getColumnIndex("pages"));
     float price = cursor.getFloat(cursor.getColumnIndex("price"));
      Log.d("MainActivity","书名" +name);
     Log.d("MainActivity","作者" +author);
     Log.d("MainActivity","页数" +pages);
     Log.d("MainActivity","价格" +price);
    }while (cursor.moveToNext());
     cursor.close();
    }
三、使用SQL操作数据库
  直接使用SQL操作数据库,示例:
  3.1 添加数据
    db.execSQL("insert into book (name ,author,pages,price) values(?,?,?,?)",new String[]{"The Da vinci Code","Dan Brown","520","19.9"});
  3.2 更新数据
    db.execSQL("updata book set price = ?where name = ?",new String[]{"9.9","The Da vinci Code"});

    3.3 删除数据

      db.execSQL(“delete from book where pages>? where name = ?”,new String[]{"500","The Da vinci Code"});

   3.4 查询数据

    db.rawQuery("select * from book",null);

SQLiteDatabase 基本操作的更多相关文章

  1. Android Sqlite 工具类封装

    鉴于经常使用 Sqlite 数据库做数据持久化处理,进行了一点封装,方便使用. 该封装类主要支持一下功能 支持多用户数据储存 支持 Sqlite数据库升级 支持传入 Sql 语句建表 支持 SQLit ...

  2. android SQLite数据库的基本操作

    SQLite是Android使用的轻量级的数据库,开发Android应用是对数据库的操作自然是必不可少. Android提供了一个SQLiteOpenHelper类来可以很方便的操作数据库, 继承和扩 ...

  3. android 使用SQLite的基本操作

    Android操作数据库SQLite使用sql语句基本操作 1:自定义自己的SQLiteOpenHelper public class DBHelper extends SQLiteOpenHelpe ...

  4. Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作

    一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...

  5. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  6. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  7. 三、Redis基本操作——List

    小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...

  8. 二、Redis基本操作——String(实战篇)

    小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...

  9. 一、Redis基本操作——String(原理篇)

    小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...

随机推荐

  1. c# 利用动态库DllImport("kernel32")读写ini文件(提供Dmo下载)

    c# 利用动态库DllImport("kernel32")读写ini文件 自从读了设计模式,真的会改变一个程序员的习惯.我觉得嘛,经验也可以从一个人的习惯看得出来,看他的代码编写习 ...

  2. Apache2.4开启GZIP功能

    HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度.这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的 ...

  3. sqlserver中DATE类型的数据转化 CONVERT

    主要描述的是SQL Server使用convert取得datetime日期数据的实际操作流程,在实际操作中用SQL Server数据库中用convert来获取datetime日期数据,以下实例包含各种 ...

  4. maven创建的Web工程,Eclipse 内 tomcat容器不识别的处理方法

    相信很多人都遇到这个问题,简单的说明下处理方式 前提是maven配置都是ok的,这里不多说了 1.创建web工程 mvn archetype:create -DgroupId=com.XXX.YYY ...

  5. 渗透日记-利用SQLMAP伪静态注入

    今日找到一个网站,做下安全检测,url是这样的: 不是传统的.php结尾,所以很多人认为这个不能注入,其实伪静态也能注入的,这个url虽然做了伪静态,但是还是需要传递参数到数据库去查询的,试试能否注入 ...

  6. python之计算器(第四天)

    作业: 使用正则表达式和递归实现计算器功能. 实现: 1.实现带括号的计算 2.实现指数.加减乘除求余等功能 一.实例说明: 本实例自己写了个版本,但依旧存在一点bug,例:-2-2等计算问题,故最后 ...

  7. Android的学习第六章(布局二--RelativeLayout)

    今天我们来说一下Android布局中的Relativelayout布局(相对布局) 根据英译过来意思是相对布局,很容易理解,这一样布局使用的是元素与元素之间的微调做到布局的 含义:通过元素与元素之间的 ...

  8. 前端之CSS(一)

    一.什么是CSS CSS是Cascading Style Sheets,层叠样式表,高大上的说法是用来控制网页数据的表现,可以使网页的表现与数据内容分离.通俗来讲,就是用各种盒子的堆叠实现我们想要的H ...

  9. python 学习随笔

    要求: 用户输入一个数,比如输入387. 需要把387打乱,然后将这三个数组合成最大数输出. 如果最大值和用户输入的等大,输出-1. 方法一: #!/user/bin/env python # _*_ ...

  10. libevent源码分析:signal-test例子

    signal-test是libevent自带的一个例子,展示了libevent对于信号事件的处理方法. #include <sys/types.h> #include <event2 ...