SQLite可以解析大部分的标准SQL语句:
建表语句:create table 表名(主键名 integer primary key autoincrement(设置为自增列),其他列名及属性)或(主键名 integer primary key )SQLite数据库中将所有声明为“integer primary key”的列自动识别为自增列。

查询语句:select * from 表名 where 条件子句 group by 分组子句 having…order by 排序子句 DESC(降序)(ASC 升序)。

分页语句:select * from 表名 limit 记录数 offset 开始位置

或者 select * from 表名 limit 开始位置,记录数

插入语句:insert into 表名(字段列表) values (值列表)

更新语句:update 表名 set 字段名=值 where 条件子句

删除语句:delete from 表名 where 条件子句

删表语句:drop table if exists 表名

增加字段语句:

alter table 表名 add column 列名 字段类型

修改数据库名称

alter table 表名 rename to 新表名

而为了方便对数据库进行版本管理,建议在开发项目的时候使用SQLiteOpenHelper类,它提供了两个重要的方法,分别是

onCreate(SQLiteDatabase db)——用于初次使用软件时生成数据库,一旦数据库存在则不会调用此方法。函数是在第一次创建数据库的时候执行的,仅仅生成DataBaseHelper对象的时候是不会调用该函数的,而只有当实现DataBaseHelper对象的getReadableDataBase时或者是调用了getWritableDataBase时,如果是第一次创建数据库,那么就一定会调用onCreate()函数 。

onUpgrade(SQLiteDatabase db,int oldVersion,int vewVersion)——用于升级软件时更新数据库表结构,如增加表、列字段等操作。

提示一下,在软件升级前,最好对原有数据进行备份,在新表建好后把数据导入新表中。

实现了这两个方法,就可以用他的getWritableDatabase()和getReadableDatabase()来获得数据库。

强调下:当第一次创建数据库时,当实现DataBaseHelper对象的getReadableDataBase时或者是调用了getWritableDataBase时,系统自动调用oncreater()方法(当然程序中也可以调用);

如果用户需要升级数据库表结构,需要主动调用onUpgrade(SQLiteDatabase db,int oldVersion,int vewVersion),传入一个新的版本的号。

查询操作:在使用SQLite的进行查询时最好用占位符“?”来代替各值,注意直接用?而不是'?'。

例如:
SQLiteDatabase db=databaseHelper.getWritableDatabase();
db.execSQL(“update person set name=?,age=? where personid=?”,new Obect{person.getName(),person.getAge(),person.getId()});
execSQL()方法是用来执行除查找语句外的sql语句,查找语句用rawQuery()来执行它会放回一个Cursor。当然,他还提供了封装好的Java类方法供我们操作。具体方法不介绍了,可以直接查看文档中SQLiteDatabase类的用法。

插入操作:

插入一行记录,可以通过三种方式实现:

第一种,封装列-值对,调用 db.insert(table, nullColumnHack, values)或者db.insertOrThrow(table, nullColumnHack, values)方法插入,插入成功返回行号,失败时返回-1.

ContentValues values=new ContentValues();
        values.put(MyHelper.COUNTRY, "中国");
        values.put(MyHelper.CODE,86);  
        //插入一行数据
        db.insert(MyHelper.TD_NAME, MyHelper.ID, values);

如果传入的values为空的话,则将插入一行各列指为NULL或0的数据,(如果列是Integer类型,则0,其它类型为NULL)。

第二种,组织SQL语句,使用 db.execSQL(String sql)或 db.execSQL(String sql,Object[] data)执行,无返回值。

String sql1="insert into "
          +MyHelper.TD_NAME+"("
          +MyHelper.COUNTRY+","
          +MyHelper.CODE+")values"
          +"(?,789)";
        String[] data={"Japan"};    
        db.execSQL(sql1, data);

第三种,使用update(String table, ContentValues values, String whereClause, String[] whereArgs)

更新行数据,注意WhereClause为update的where条件,不带关键字where:如:

SQLiteDatabase db = this.getWritableDatabase();
  String where = BOOK_ID + " = ?";
  String[] whereValue = { Integer.toString(id) };

ContentValues cv = new ContentValues();
  cv.put(BOOK_NAME, bookname);
  cv.put(BOOK_AUTHOR, author);
  db.update(TABLE_NAME, cv, where, whereValue);

Androide SQLiteDatabase数据库操作(转)的更多相关文章

  1. [Android Pro] 完美Android Cursor使用例子(Android数据库操作)

    reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...

  2. Android打造属于自己的数据库操作类。

    1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...

  3. 实验8 SQLite数据库操作

    实验报告 课程名称 实验8  SQLite数据库操作 实验日期 2016.5.6 实验项目名称 多媒体应用开发 实验地点 S30010 实验类型 □验证型    √设计型    □综合型 学  时 一 ...

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

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

  5. Android之数据库操作

    安卓数据库帮助类 /** * 数据库帮助类,用于管理数据库 * @author Administrator * */ public class PersonSQLiteOpenHelper exten ...

  6. android中的数据库操作

    如何在android中调用数据库资源 在android中主要有两种方法来实现对数据库的访问,一种是adb shell方式,另一种是通过相关的android 的java类来间接的对数据库来进行操作.其中 ...

  7. 安卓 SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  8. 在安卓开发中使用SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  9. android中的数据库操作(转)

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   an ...

随机推荐

  1. STL之priority_queue

    下面以 long long 型队列介绍: Q.empty() // 判断队列是否为空 返回ture表示空 返回false表示空 bool Q.top() // 返回顶端元素的值 元素还在队列里 lon ...

  2. 工作总结_js

    工作至今已经有7个月了,虽然有进步,但是总感觉还是什么都不知道.可能这其中很大一部分还是与自己有关系,遇到自己不知道,问了人,或者百度到了,但是自己没有用心记.平时要用的时候,打开上一个项目,复制粘贴 ...

  3. IOS网络第七天WebView-02WebView和网页的交互2,删除大众点评多余文字,加上蒙版进度

    ************ #import "HMViewController.h" @interface HMViewController () <UIWebViewDele ...

  4. 避免Castle Windsor引起的内存泄露

    原文地址: http://nexussharp.wordpress.com/2012/04/21/castle-windsor-avoid-memory-leaks-by-learning-the-u ...

  5. 【BOOM】一款有趣的Javascript动画效果

    实践出真知,有的时候看到一些有趣的现象就想着用自己所学的知识复现一下.    boomJS 缘起 前几天在 github 上看到同事的一个这样的小项目,在 IOS 上实现了这样一个小动画效果,看上去蛮 ...

  6. 老司机学新平台 - Xamarin开发环境及开发框架初探

    随着被微软收购,最近一年间,Xamarin的火爆程度与日俱增.免费.更好的VS2015集成.更好的模拟器,甚至,在windows上运行和调试iOS平台程序,让我这样接触了十几年.NET平台的老司机,即 ...

  7. 升级CentOS内核 - 2.6升级到3.10

    *因为学习docker的需要,docker的官方推荐内核使用3.8以上,所以本人决定把CentOS内核升到长期稳定版的3.10. ##记得切换到root用户执行升级操作. [root@localhos ...

  8. 《第一本docker书》—— 读后总结

    关于docker 这本书其实并没有读完,只不过最近工作比较繁忙,也无心再看这些用不到的书.以后要是工作需要,再仔细学习吧. 这次的阅读算是达到目的了,对docker有了一定的了解.它的作用.意义以及大 ...

  9. myeclipse转到函数定义的方法去

    转到函数的定义CTRl+鼠标左击 myeclipse自动补全的快捷键 alt+/

  10. MVVM框架下 WPF隐藏DataGrid一列

    最近的一个项目,需要在部分用户登录的时候,隐藏DataGrid中的一列,但是常规的绑定不好使,在下面举个例子. XAML部分代码 <Window x:Class="DataGridCo ...