数据库操作SQLite Expert Personal 3

注:下载相关SQLite的文档在:http://www.sqlite.org/

具体的sql语句不作长细介绍,在本博客中也有相关的文章。

一、SQLiteOpenHelper类位于android.database.sqlite.SQLiteOpenHelper,用来进行数据库的创建和管理数据库的版本。相关的重要应用方法有:

1、synchronized SQLiteDatabase getReadableDatabase()//创建一个只读的SQLiteDatabase对象。

2、synchronized SQLiteDatabase getWritableDatabase()//创建一个能写的SQLiteDatabase对象。

3、abstract void onCreate(SQLiteDatabase db)//当新生成SQLiteDatabase对象同时还调用了getReadableDatabase()方法或者getWritableDatabase()方法时,这个方法就会调用。(这个是抽象方法,必须重写!)

/*

如:

SQLiteOpenHelper.onCreate(SQLiteDatabase db){

System.out.println("create a database");

db.execSQL("CREATE TABLE user(id int,name varchar(20))");

}

这段代码是表示,在新创建数据库的时候就打印出"create a database"这句话,然后再执行"CREATE TABLE use(id int,name varchar(20))"这句话,创建一个表,表明为user,里面有两个属性:id和name,而且分别为int类型和varchar(20)的类型。*/

4、abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)//当SQLiteDatabase对象升级时,这个方法就会调用。

5、void onDowngrade(SQLiteDatabase db,int oldVersion,int newVersion)//当数据库版本降级时,这个方法会调用

/*更新数据库的版本是通过重新构造SQLiteOpenHelper对象来使得数据库的版本改变。例如(本来数据库的版本是2):

SQLiteOpenHelper DatabaseHelper=new SQLiteOpenHelper(Context context,String string,null,1);

SQLiteDatabase db=DatabaseHelper.getReadableDatabase();

由于SQLiteOpenHelper的构造函数的最后一个参数是1,跟原来的版本(原来版本是2)不同,而且是把版本降级了,所以就会就会调用onDowngrade(SQLiteDatabase db,int oldVersion,int newVersion);

方法来处理降级;

当SQLiteOpenHelper的构造函数的最后一个参数是3,那么就比原来的版本高级了,所以就会调用

onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion);

方法来处理升级。*/

6、synchronized void close()//关闭一些数据库

7、void onOpen(SQLiteDatabase db)//当SQLiteDatabase对象打开的时候,这个方法就会调用

二、SQLiteDatabase类位于android.database.sqlite.SQLiteDatabase,用来提供操作数据库的一些方法。相关的常用方法有:

1、void close()//用来关闭SQLiteDatabase对象

2、int delete(String table,String whereClause,String[] whereArgs)//用来删除表中的数据,table要删除的数据所在的表,whereClause

3、void execSQL(String sql)//运行字符串sql中的sql语句,与上面的一个例子相对应。

4、final String getPath()//得到当前数据库文件的路径

5、int getVersion()//得到当前数据库的版本

6、long insert(String table,String nullColumnHack,ContentValues values)//向表中输入数据。。。

/*在插入数据是经常会用到ContentValues对象来插入数据:

如:

ContentValues values=new ContentValues();

values.put("id",1);//put方法的第一个参数是下面insert方法的tablename表的id列,而第二个就是加入元组的id列的值;加入的值必须要与相应的属性的类型相匹配。

values.put("name","zhangsan");

SQLiteOpenHelper Databasehelper=new SQLiteOpenHelper(Content content,String string,null,VERSION);

SQLiteDatabase db=DatabaseHelper.getWritableDatabase();

db.insert(String tablename,null,values);

SQLiteDatabase.insert方法的第二个参数是指当插入的元组有空值的时候就填写这个参数进去,所以这里为null*/

7、boolean isOpen()//判断数据库是否打开

8、Cursor quer(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy)//数据库放到Cursor中。。。

/*如:

SQLiteOpenHelper DatabaseHelper=new SQLiteOpenHelper(Context context,String string,null,2);

SQLiteDatabase db=DatabaseHelper.getReadableDatabase();

Cursor cursor=db.query("user",new String[]{"id","name"},"id=?",new String[]{"1"},null,null,null);

while(cursor.moveToNext()){

String name=cursor.getString(cursor.getColumnIndex("name"));

System.out.println("query------>"+name);

}

在上面的例子中,SQLiteDatabase.query方法中的参数有7个,第一个是表名,第二个是列名(字符串数组),第三个WHERE的字句,第四个势第三个参数中有"?"的代替字符串(字符串数组),第五个GROUP BY子句,第五个是HAVING子句,ODERBY子句。

还有,String name=cursor.getString(cursor.getColumnlndex("name"));语句中cursor.getString方法中的参数是在表中的列的标号,后面的cursor.getColumnIndex("name")方法是得到name属性所在的第几列(列数)。*/

9、int update(String table,ContentValues values,String whereClause,String[] whereArgs)//更新表。。。

/*如:

SQLiteOpenHelper DatabaseHelper=new SQLiteOpenHelper(Context context,String string,null,2);

SQLiteDatabase db=DatabaseHelper.getWritableDatabase();

ContentValues values=new ContentValues();

values.put("name","zhangsanfeng");

db.updata("user",values,"id=?", new String[] {"1"});

上面的输入的values的name是要修改的元组的所在列,第二个参数是修改后的值。updata方法的第一个参数是表明,第二个是ContentValues对象,第三个是WHERE的字句,第四个参数可以使null,但是如果第三个参数有"?",则第四个参数就是一个字符串数组,第一个字符串对应第一个"?",第二个字符串对应第二个"?"......*/

10、void setVersion(int version)//设置数据库的版本

三、Android提供了adb工具,这是一个是我们可以进入操作系统,以linux的方式调试我们的应用程序。输入"adb shell"就可以进入到linux命令行。在这里也不做介绍,请自己回去复习linux知识。当输入"adb shell"按下回去和后,再输入"sqlit3"再加上所要查询的数据库,就进入了sql输入命令行。

[转]Android SQLite的更多相关文章

  1. Android SQLite 通配符查询找不到参数问题

    使用Android SQLite中SQLiteDatabase类的query方法查询时,如果where中包含通配符,则参数会无法设置,如类似下面的方法查询时 SQLiteDatabase db = d ...

  2. Android+Sqlite 实现古诗阅读应用(三)

    往期传送门: Android+Sqlite 实现古诗阅读应用(一) Android+Sqlite 实现古诗阅读应用(二) 加入截图分享的功能. 很多应用都有分享的功能,我也想在我的古诗App里加入这个 ...

  3. Android+Sqlite 实现古诗阅读应用(二)

    传送门:Android+Sqlite 实现古诗阅读应用(一) Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择 ...

  4. Android Sqlite 数据库版本更新

      Android Sqlite 数据库版本更新 http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承 ...

  5. Android SQLite总结(一) (转)

    Android SQLite总结(一)  郑海波 2012-08-21 转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 ...

  6. android SQLite使用SQLiteOpenHelper类对数据库进行操作

    android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580

  7. Android sqlite管理数据库基本用法

    Android操作系统中内置了sqlite数据库(有关sqlite数据库详细介绍见:http://zh.wikipedia.org/wiki/SQLite),而sqllite本身是一个很小型的数据库, ...

  8. Android SQLite 数据库详细介绍

    Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...

  9. Android Sqlite 导入CSV文件 .

    http://blog.csdn.net/johnnycode/article/details/7413111 今天遇到 Oracle 导出的12万条CSV格式数据导入 Android Sqlite ...

  10. Android sqlite数据库存取图片信息

    Android sqlite数据库存取图片信息 存储图片:bitmap private byte[] getIconData(Bitmap bitmap){ int size = bitmap.get ...

随机推荐

  1. Jmeter常用脚本开发之Debug Sampler

    Debug Sampler编辑脚本时调试用的,跟Java项目打断点测试同理,它可以Debug Jmeter中所有自定义变量的值 如何添加Debug Sampler? 打开测试计划—>线程组—&g ...

  2. msysgit解决中文乱码问题

    项目中在用git,安装msysgit客户端后处理中文是有问题的: ls中文目录/文件名乱码:提交中文的log,push到服务器上会乱码:git log查看服务器pull过来的log乱码. 1.ls命令 ...

  3. (转)HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面

    详细错误:HTTP 错误 404.2 - Not Found. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面. 出现环境:win7 + IIS7.0 解决办法 ...

  4. m0n0wall 详细介绍

    pfSense就是基于m0n0wall m0n0wall,挺奇怪的软件名, M0n0wall是基于以性能和稳定性著称的FreeBSD内核的嵌入式的防火墙系统. m0n0wall对硬件要求很低,486芯 ...

  5. RDMA的基础概念

    一张图可以简单明确的说明,目前RDMA的几种技术的差别: RDMA是remote Direct memory access的简称,有几个最基本的特点: CPU offload kernel bypas ...

  6. widget jquery 理解

    jquery ui 的所有组件都是基于一个简单,可重用的widget. 这个widget是jquery ui的核心部分,实用它能实现一致的API,创建有状态的插件,而无需关心插件的内部转换. $.wi ...

  7. django数据库多对多修改对应关系

    obj = models.Book.objects.get(id=1) #添加对应关系,给书添加作者# obj.m.add(3)# obj.m.add(2,4)# obj.m.add(*[1,2,3, ...

  8. jQuery 2

    <head > <style type="text/css">        /*table中偶数行*/ .tabEven {            bac ...

  9. Windows AD域管理软件

  10. RBAC简介

    1.RBAC 中文名称:基于角色的访问控制 1.1 作用:实现访问控制 1.2 核心:角色 2.英文名称:(Role-Based Access Control) 3.解释:一种思想,根据RBAC思想进 ...