一、SQLite简介 

Google为Andriod的较大的数据处理提供了SQLite,
他在数据存储、管理、维护等各方面都相当出色,
功能也非常的强大。

二、SQLite的特点

1.轻量级
使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,
而且那个动态库的尺寸想当小。
2.独立性
SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
3.隔离性
SQLite 数据库中所有的信息(比如表、视图、触发器等)
都包含在一个文件夹内,方便管理和维护。
4.跨平台
SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统
也是能够运行,比如:Android。
5.多语言接口
SQLite 数据库支持多语言编程接口。
6.安全性
SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。
这意味着多个进程可以在同一时间从同一数据库读取数据,
但只能有一个可以写入数据。

三、SQLite的数据类型

·关于SQLite的数据类型:

  -SQLite支持NULL、INTEGER、REAL、TEXT和BLOB数据类型

  -依次代表:空值、整型值、浮点值、字符串值、二进制对象

·动态数据类型(弱引用)

  -当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,

  SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储

四、SQLiteDatabase类

·SQLiteDatabase类

  -提供创建、删除、执行的SQL命令,并执行其他常见的数据库管理任务的方法

  -每个程序的数据库名字是唯一的

·SQLiteDatabase类为我们提供了很多种方法,而较常用的方法如下

  (int) delete(String table,String whereClause,String[] whereArgs)
  删除数据行的便捷方法

  (long) insert(String table,String nullColumnHack,ContentValues values)
  添加数据行的便捷方法

  (int) update(String table, ContentValues values, String whereClause, String[] whereArgs)
  更新数据行的便捷方法

  (void) execSQL(String sql)
  执行一个SQL语句,可以是一个select或其他的sql语句

  (void) close()
  关闭数据库

  (Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
  查询指定的数据表返回一个带游标的数据集

  (Cursor) rawQuery(String sql, String[] selectionArgs)
  运行一个预置的SQL语句,返回带游标的数据集(与上面的语句最大的区别就是防止SQL注入)

·数据的添加

//使用insert方法
ContentValues cv = new ContentValues();
//实例化一个ContentValues用来装载待插入的数据
cv.put("username","Jack Johnson");//添加用户名
cv.put("password","iLovePopMusic"); //添加密码
db.insert("user",null,cv);//执行插入操作 使用execSQL方式来实现
String sql = "insert into user(username,password) values ('Jack Johnson','iLovePopMuisc');//插入操作的SQL语句
db.execSQL(sql);//执行SQL语句

·数据的删除

//使用delete方法
String whereClause = "username=?";//删除的条件
String[] whereArgs = {"Jack Johnson"};//删除的条件参数
db.delete("user",whereClause,whereArgs);//执行删除 String sql = "delete from user where username='Jack Johnson'";//删除操作的SQL语句
db.execSQL(sql);//执行删除操作

·数据的修改

//使用update方法
ContentValues cv = new ContentValues();//实例化ContentValues
cv.put("password","iHatePopMusic");//添加要更改的字段及内容
String whereClause = "username=?";//修改条件
String[] whereArgs = {"Jack Johnson"};//修改条件的参数
db.update("user",cv,whereClause,whereArgs);//执行修改 String sql = "update [user] set password = 'iHatePopMusic' where username='Jack Johnson'";//修改的SQL语句
db.execSQL(sql);//执行修改

·数据的查询

通过query实现查询的
  public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

  table:表名称
  colums:列名称数组
  selection:条件子句,相当于where
  selectionArgs:条件语句的参数数组
  groupBy:分组
  having:分组条件
  orderBy:排序类
  limit:分页查询的限制
  Cursor:返回值,相当于结果集ResultSet

游标(Cursor)
  getCount()总记录条数
  isFirst()判断是否第一条记录
  isLast()判断是否最后一条记录
  moveToFirst()移动到第一条记录
  moveToLast()移动到最后一条记录
  move(int offset)移动[是指偏移量而不是指移到指定位置]
  moveToNext()移动到吓一条记录
  moveToPrevious()移动到上一条记录
  getColumnIndex(String columnName)获得指定列索引的int类型值

//游标(Cursor)
Cursor c = db.query("user",null,null,null,null,null,null);//查询并获得游标
if(c.moveToFirst()){//判断游标是否为空
    for(int i=0;i<c.getCount();i++){
        c.moveToNext();
        String username = c.getString(c.getColumnIndex("username");
        String password = c.getString(c.getColumnIndex("password"));
    }
//rawQuery实现的带参数查询

Cursor c = db.rawQuery("select * from user where username=?",new Stirng[]{"Jack Johnson"});
if(cursor.moveToFirst()) {
    String password = c.getString(c.getColumnIndex("password"));
}

四、SQLiteOpenHelper

·SQLiteOpenHelper

  -SQLiteOpenHelper是SQLiteDatabase的一个帮助类,
  用来管理数据库的创建和版本的更新。
  一般是建立一个类继承它,
  并实现它的onCreate和onUpgrade方法。

  -onCreate(SQLiteDatabase db)
  创建数据库时调用

  -onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)
  版本更新时调用

  -getReadableDatabase()
  创建或打开一个只读数据库

  -getWritableDatabase()
  创建或打开一个读写数据库

·创建SQLiteOpenHelper类

public class MyDatabaseOpenHelper extends SQLiteOpenHelper {

    private static final String db_name = "mydata.db"; // 数据库名称
private static final int version = 1; // 数据库版本
  
public MyDatabaseOpenHelper(Context context) {
super(context, db_name, null, version);
} //该方法没有数据库存在才会执行
public void onCreate(SQLiteDatabase db) {
     //没有数据库打印日记
Log.i("Log","没有数据库,创建数据库");
     //建表语句
String sql_message="create table t_message (id int primary key,userName varchar(50),lastMessage varchar(50),datetime varchar(50))";
//执行建表语句
db.execSQL(sql_message);
} //数据库存更新才会执行
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      Log.i("updateLog","数据库更新了!");
  }
}

·调用了SQLiteOpenHelper类的getWritableDatabase()方法来获取一个数据库

public class MainActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     DatabaseOpenHelper helper = new DatabaseOpenHelper(MainActivity.this);
    //获取一个可写的数据库
    SQLiteDatabase db = helper.getWritableDatabase();   } }

Android之SQLite数据库篇的更多相关文章

  1. android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

    android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        ...

  2. Qt for Android 打包 SQLite 数据库

    Qt for Android 调用 SQLite 数据库时, 怎样将已经存在的数据库附加到 APK 中? 直接在你项目里面的Android源码的根目录下新建一个文件夹assets, 数据库就可以放里面 ...

  3. Android实现SQLite数据库联系人列表

    Android实现SQLite数据库联系人列表 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个通讯录查看程序: 要求使用SQLite ...

  4. Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库

    下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...

  5. android中sqlite数据库的基本使用和添加多张表

    看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大 ...

  6. Android之SQLite数据库使用

    转载整理于:http://my.csdn.net/lmj623565791 我刚开始接触Android的时候甚至都不敢相信,Android系统竟然是内置了数据库的!好吧,是我太孤陋寡闻了.由于我之前是 ...

  7. 我的Android六章:Android中SQLite数据库操作

    今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...

  8. android操作sqlite数据库及心得

    写这篇文章主要是网上的对sqlite的操作太多且太杂,非常多时候都不能非常好的运用到自己的项目中,结构不清晰,我自己写了一篇适合刚刚接触的人看的操作方法. 近来用android时要将一些数据保存起来, ...

  9. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

随机推荐

  1. Angular2入门系列教程2-项目初体验-编写自己的第一个组件

    上一篇 使用Angular-cli搭建Angular2开发环境 Angular2采用组件的编写模式,或者说,Angular2必须使用组件编写,没有组件,你甚至不能将Angular2项目启动起来 紧接着 ...

  2. 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[下]:管道是如何构建起来的?

    在<中篇>中,我们对管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的.总的来说,管道由一个服务器和一个HttpApplication构成 ...

  3. select、poll、epoll之间的区别总结

    select.poll.epoll之间的区别总结 05/05. 2014 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪 ...

  4. Java中,异常的处理及抛出

    首先我们需要知道什么是异常? 常通常指,你的代码可能在编译时没有错误,可是运行时会出现异常.比如常见的空指针异常.也可能是程序可能出现无法预料的异常,比如你要从一个文件读信息,可这个文件不存在,程序无 ...

  5. 2016/12/31_Python

    今天学习主要内容: Python: 1.with语句(补充昨天的文件操作) 用with打开的文件在脚本结束会自动关闭,以防普通打开方式忘记关闭文件连接 语法: with open("demo ...

  6. java设计模式之单例模式(几种写法及比较)

    概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...

  7. JavaScript中String对象的方法介绍

    1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...

  8. JS鼠标事件大全 推荐收藏

    一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...

  9. 在Linux配置Nginx web服务器步骤

    系统环境:centos7 需要软件:nginx-1.3.16.tar.gz   libevent-2.0.21-stable.tar.gz  Pcre 和 pcre-devel nginx下载地址:h ...

  10. appium+robotframework环境搭建

    appium+robotframework环境搭建步骤(Windows系统的appium自动化测试,只适用于测试安卓机:ios机需要在mac搭建appium环境后测试) 搭建步骤,共分为3部分: 一. ...