android SQLite数据库
来源:互联网 发布:linux安装spark 编辑:程序博客网 时间:2024/06/16 14:37
android是一个小型的设备,不可能安装一个Mysql数据库在我们的手机手,本身手机上的内存就有限,所以android嵌入了一个很小的关系型数据库就是SQLite,和其他数据库不同的是SQLite存储数据时不区分类型,
比如:一个字段声明为Integer类型,我们也可以存入一个字符串类型数据,一个字段声明为Boolean类型,我们也可以存储一个浮点型数据
除非是主键被定义为Integer,这时只能存储64位整数,
创建数据库表时可以不指定数据类型,但是在实际的项目开发中,肯定是每人这么写的,这样其他人没办法读懂,不利于后期的维护,
SQLite支持大部分sql的标准语句,增删改查都是通用的,分页查询和MYsql相同
SELECT * FROM person LIMIT 20 OFFSET 10
SELECT * FROM person LIMIT10,20
指的是从第10+1条开始取20条数据
在android中创建数据库
1:继承SQLiteOpenHelper,因为SQLiteOpenHelper是抽象的类,它里面有二个抽象的方法需要子类去具体实现,因为抽象类他不知道子类的业务需求是什么,所以只能做成抽象的方法了
2:重写onCreate()
3:重写onUpGrade()
现在写一个例子说明下:
MyHelper.java
package com.handcool.sqlite;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class MyHelper extends SQLiteOpenHelper {
private static final String DB_NAME="handcool";
private static final int version = 1;
private static final String TAG = "MyHelper";
public MyHelper(Context context) {
super(context, DB_NAME, null, version);
}
/**
* 当数据库被创建的时候 会自动执行onCreate()方法,当已有数据库时,就不会再执行此方法
* 也就是说这个方法只会执行一次,一般在这都是创建表的结构
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE person(id,Integer,name varchar(20))");
Log.e(TAG,"onCreate方法执行了");
}
/**
* 从上面的构造函数中最后一个参数(version)我们知道这是数据库版本,从1开始,当数据库版本发生变化时,会执行onUpgrade()方法
* 一般添加什么字段啊 ,对数据库进行一些操作 都在这执行
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.e(TAG,"onUpgrade方法执行了");
}
}
这个类继承了SQLiteOpenHelper类,就代表着数据库,我们再写个单元测试,测试下他的结果;如图
就执行了onCreate()方法,而没有执行onUpgrade()方法,因为数据库版本没有升级,所以这个验证时对的,再看看表的结构
数据库文件在data/data/包名/databases目录下,请看截图:
我在这里放了一个错误,之前的数据库文件名后缀没有写.db,导致我 无法查看其表的结构,
原来好像是后缀名写不写都是可以的,今天没写就遇到了这个问题,
现在我把数据库版本改为2,看看打印的日记信息
发现oncreate()方法没有打印出来,所以我们可以总结为
1:oncreate()方法只有在数据库创建的时候才会调用,但数据库已存在时,不会执行oncreate()方法,
2:但数据库版本发生变化时,会执行onUpgra()方法
在android2.3以后api有点变化,当我们把数据库版本从3改为2时,意味着数据库版本降级,那么会执行
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
super.onDowngrade(db, oldVersion, newVersion);
}
这个方法
- Android数据库 SQLite数据库
- Android 之 SQLite 数据库
- Android 使用SQLite数据库
- android SQLite数据库应用
- Android 使用SQLite数据库
- Android☞SQLite数据库
- Android 使用SQLite数据库
- Android使用SQlite数据库
- android sqlite数据库操作
- android----SQLite数据库
- Android之SQLite数据库
- Android之SQLite数据库
- android SQLite数据库
- android访问sqlite数据库
- Android-SQLite数据库使用方法
- Android中的数据库SQLite
- Android连接SQLite数据库
- android 数据库 SQLite
- Linux系统调用(国嵌)
- 《JavaScript高级程序设计 第三版》学习笔记 (七) 内存泄漏详解
- 暑期英语总结
- hdu 1339
- Codeforces 463C Gargari and Bishops(贪心)
- android SQLite数据库
- 双向链表的创建和相关操作
- 喷水装置(一)
- 八月英语总结
- tab-size, word-wrap属性的应用
- 正则表达式学习正式记录
- Valid Parentheses
- hdu 1408
- -