[转]Android SQLite
数据库操作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的更多相关文章
- Android SQLite 通配符查询找不到参数问题
使用Android SQLite中SQLiteDatabase类的query方法查询时,如果where中包含通配符,则参数会无法设置,如类似下面的方法查询时 SQLiteDatabase db = d ...
- Android+Sqlite 实现古诗阅读应用(三)
往期传送门: Android+Sqlite 实现古诗阅读应用(一) Android+Sqlite 实现古诗阅读应用(二) 加入截图分享的功能. 很多应用都有分享的功能,我也想在我的古诗App里加入这个 ...
- Android+Sqlite 实现古诗阅读应用(二)
传送门:Android+Sqlite 实现古诗阅读应用(一) Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择 ...
- Android Sqlite 数据库版本更新
Android Sqlite 数据库版本更新 http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承 ...
- Android SQLite总结(一) (转)
Android SQLite总结(一) 郑海波 2012-08-21 转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 ...
- android SQLite使用SQLiteOpenHelper类对数据库进行操作
android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580
- Android sqlite管理数据库基本用法
Android操作系统中内置了sqlite数据库(有关sqlite数据库详细介绍见:http://zh.wikipedia.org/wiki/SQLite),而sqllite本身是一个很小型的数据库, ...
- Android SQLite 数据库详细介绍
Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...
- Android Sqlite 导入CSV文件 .
http://blog.csdn.net/johnnycode/article/details/7413111 今天遇到 Oracle 导出的12万条CSV格式数据导入 Android Sqlite ...
- Android sqlite数据库存取图片信息
Android sqlite数据库存取图片信息 存储图片:bitmap private byte[] getIconData(Bitmap bitmap){ int size = bitmap.get ...
随机推荐
- Linux_(2)基本命令(下)
六.文件搜索命令11 :which功能描述:显示系统命令所在目录命令所在路径:/usr/bin/which执行权限:所有用户语法:which [命令名称]范例:$ which ls 12 :find功 ...
- mybatis进阶--输入映射和输出映射
我们知道,mapper.xml是我们配置操作数据库的sql语句的地方.其中每个sql语句对应着一个方法,每个方法都有自己的输入输出参数类型.那么这些类型都是怎么配置的呢?今天我们来一起学习下. 输入映 ...
- tensorflow.reshap(tensor,shape,name)的使用说明
tensorflow as tf tf.reshape(tensor, shape, name=None) reshape作用是将tensor变换为指定shape的形式. 其中shape为一个列表形式 ...
- 设置漂亮的eclipse主题(Theme)风格
看看这些主题: Eclipse Color Themes 设置步骤: 1.点击help --> Eclipse Marketplace... 2.搜索Color Eclipse Themes 3 ...
- mysql if--then--else --endif 问题
if 0 =resultValue then set @m = 2; else set @m =1; end if if 0 =resultValue then set @m = 2; else se ...
- 把一行数字(readline)读进List并以科学计数法输出(write)到文件
主要过程是读取的时候是一行字符串,需要Strip去除空格等,然后split变成一个List. 注意这时候数据结构是List但是每一个元素是Str性质的. 所以需要map(float,List) 把这 ...
- Java中的四种内部类
Java中有四种内部类: 成员内部类:定义在另一个类(外部类)的内部,而且与成员属性和方法平级,故称成员内部类.类比于外部类的非静态方法,如果用static修饰就变成了静态内部类 静态内部类:使用st ...
- 学习C语言以及C语言基础调查
学习声乐的心得 你有什么技能比大多人(超过90%以上)更好? 就我个人而言,在所有的兴趣之中,做得比较好的应该属于声乐. 针对这个技能的获取你有什么成功的经验? 我对于声乐处始于兴趣,成功的经 ...
- python Trie树和双数组TRIE树的实现. 拥有3个功能:插入,删除,给前缀智能找到所有能匹配的单词
#coding=utf- #字典嵌套牛逼,别人写的,这样每一层非常多的东西,搜索就快了,树高26.所以整体搜索一个不关多大的单词表 #还是O(). ''' Python 字典 setdefault() ...
- Firebug & Chrome Console 控制台使用指南
转自:http://visionsky.blog.51cto.com/733317/543789 Console API 当打开 firebug (也包括 Chrome 等浏览器的自带调试工具),wi ...