数据库操作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. 计数器counter

    今天就讲了2个属性:1.计数器 2.列规则 列规则很简单:column-count:3; (列的具体个数) column-width:30px;(列宽)N个浏览器不兼容column-gap:10px; ...

  2. hdu 1059 (多重背包) Dividing

    这里;http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意是有价值分别为1,2,3,4,5,6的商品各若干个,给出每种商品的数量,问是否能够分成价值相等的 ...

  3. python提取百度经验<标题,发布时间,平均流量,总流量,具体的链接>

    之前想研究下怎么抓网页数据.然后就有了下面的练习了. 如有BUG.也纯属正常. 只是练习.请勿投入产品使用. #!/usr/bin/python # -*- coding: utf-8 -*- #Fi ...

  4. Python压缩文件夹 tar.gz .zip

    打包压缩生成 XXX.tar.gz 文件 import os import tarfile if os.path.exists(outputFileName): with tarfile.open(o ...

  5. rapidjson 的封装学习

    #pragma once #include "Util.h" #include "rapidjson/writer.h" #include "rapi ...

  6. 基于tomcat的solr环境搭建(Linux)

    ♥♥  solr是基于lucene的一个全文检索服务器,提供了一些类似webservice的API接口,用户可以通过http请求solr服务器,进行索引的建立和索引的搜索.索引建立的过程:用户提交的文 ...

  7. java mail 读取邮件列表,

    // 准备连接服务器的会话信息 Properties props = new Properties(); props.setProperty("mail.store.protocol&quo ...

  8. maven 介绍(zz )

    Maven 编辑     目录 1简介 2特点 3常用命令 4推荐书籍 5Win7配置 6生命周期     1   1简介 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构 ...

  9. android-如何获得当前正在运行的activity的相关信息

    http://blog.csdn.net/centralperk/article/details/7269326 ActivityManager manager = (ActivityManager) ...

  10. DevOps:从理念到实施

    转载自:http://os.51cto.com/art/201404/436794.htm DevOps这个新理念的出现,是为了应对IT环境中普遍面临的一些挑战.开发团队要求的不断满足新的客户需求,并 ...