数据库操作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. shell判断文件后缀名是否为特定字符串

    如果文件是 .css文件 或 .js文件,则进行处理. if [ "${file##*.}"x = "css"x ]||[ "${file##*.}& ...

  2. html 转化成 pdf

  3. mysql 5.17 的update失败问题

    在使用workbench的时候,写入update语句,会很提现失败,原因是安全模式; 可能是workbench在数据库更新的时候是有限制的,防止错误哦l 更改方法也很简单; Edit - Profer ...

  4. list,set等集合遍历时,不能remove集合中的元素。需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAll(list/set)操作

    list,set等集合遍历时,不能remove集合中的元素.需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAl ...

  5. python输出格式对齐问题

    采用.format打印输出时,可以定义输出字符串的输出宽度,在 ':' 后传入一个整数, 可以保证该域至少有这么多的宽度. 用于美化表格时很有用. >>> table = {'Goo ...

  6. SpringBoot中文乱码解决方案

    转载:https://blog.csdn.net/wangshuang1631/article/details/70753801 方法一,修改application.properties文件 增加如下 ...

  7. Windows8.1,IIS,WCF

    在.NET 4中用IIS部署WCF就这么简单 http://www.cnblogs.com/dudu/archive/2011/01/18/1938490.html win8.1怎么安装iis htt ...

  8. canvas 实现太阳系效果

    一:创建画布 <canvas width="1000" height="1000" id="solar" style="ba ...

  9. raiDrive添加坚果云

    把坚果云网盘映射到本地. 使用raidrive 中webDAV添加坚果云. 1.登录自己的坚果云网页版,点“安全选项”,右侧有第三方应用管理,生成密码,按照示例填入第三方应用即可. 2.注意:暂时此处 ...

  10. ssh定义、操作

    Secure Shell(縮寫为SSH)SSH為一项建立在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境. 传统的网络服务程序,如rsh.FTP.POP和Tel ...