一、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. 回首经典的SQL Server 2005

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com SQL Server是我使用时间最长的数据库,算起来已经有10年了.上世纪90年代,微软在软件开发的所有领域高歌猛 ...

  2. Socket聊天程序——Common

    写在前面: 上一篇记录了Socket聊天程序的客户端设计,为了记录的完整性,这里还是将Socket聊天的最后一个模块--Common模块记录一下.Common的设计如下: 功能说明: Common模块 ...

  3. nodejs创建http服务器

    之前有简单介绍nodejs的一篇文章(http://www.cnblogs.com/fangsmile/p/6226044.html) HTTP服务器 Node内建有一个模块,利用它可以很容易创建基本 ...

  4. jQuery学习之路(6)- 简单的表格应用

    ▓▓▓▓▓▓ 大致介绍 在CSS技术之前,网页的布局基本都是依靠表格制作,当有了CSS之后,表格就被很多设计师所抛弃,但是表格也有他的用武之地,比如数据列表,下面以表格中常见的几个应用来加深对jQue ...

  5. Android学习路线总结,绝对干货

    title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...

  6. Phoenix综述(史上最全Phoenix中文文档)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/users/6cb45a00b49c/latest_articles 网上关于P ...

  7. vs生成pro

    1.修改.vcxproj文件   <PropertyGroup Label="Globals">    <ProjectGuid>{AAAA4039-13B ...

  8. Fresnel Reflection - 菲涅尔反射

    [Fresnel Reflection - 菲涅尔反射] “菲涅尔”是一个人的名字,因为他发现了一个有关反射的光学现象,这个现象就用这个人的名字命名了.那么,是什么现象呢? 这就是反射/折射与视点角度 ...

  9. ASP.NET Aries DataGrid 配置表头说明文档

    DataGrid 配置表头 字段 中文 说明 Field 字段 注意:mg_ 开头的字段为层级表头 Title 列称 OrderNum 序号 显示的顺序(冻结和非冻结列是两个组的序号) Width 列 ...

  10. Linux 安装Mono环境 运行ASP.NET(一)

    1.先看一下Linux环境下面请求的过程,(画的不是很好,简单的了解一下原理.) .NET跨平台其实需要这三个关键:编译器.CLR和基础类库.在.NET下我们编写一个最简单的"Hello W ...