关于数据库的学习
2014-10-27 10:56
148 查看
SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个 方法。
onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。
比如:
public class DatabaseHelper extends SQLiteOpenHelper {
//类没有实例化,是不能用作父类构造器的参数,必须声明为静态
private static final String name = "itcast"; //数据库名称
private static final int version = 1; //数据库版本
public DatabaseHelper(Context context) {
//第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类
super(context, name, null, version);
}
@Override public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS person (personid integer primary key autoincrement, name varchar(20), age INTEGER)");
}
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(" ALTER TABLE person ADD phone VARCHAR(12) NULL "); //往表中增加一列
// DROP TABLE IF EXISTS person 删除表
}
}
<pre name="code" class="java"><span style="font-size:14px;"> 除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。
SQLiteOpenHelper 类的基本用法是:当需要创建或打开一个数据库并获得数据库对象时,首先根据指定的文件名创建一个辅助对象,然后调用该对象的getWritableDatabase 或 getReadableDatabase方法 获得SQLiteDatabase 对象。
调用getReadableDatabase 方法返回的并不总是只读数据库对象,一般来说该方法和getWriteableDatabase 方法的返回情况相同,只有在数据库仅开放只读权限或磁盘已满时才会返回一个只读的数据库对象。
dh = new DatabaseHelper(mContext, dbName, null, dbVersion);
mSQLiteDatabase = dh.getWritableDatabase();
然后就可以执行数据库的语句了</span>
int nameIndex = cursor.getColumnIndex("name");
操作完后关闭
cursor.close();//关闭结果集
db.close();//关闭数据库对象
onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。
比如:
public class DatabaseHelper extends SQLiteOpenHelper {
//类没有实例化,是不能用作父类构造器的参数,必须声明为静态
private static final String name = "itcast"; //数据库名称
private static final int version = 1; //数据库版本
public DatabaseHelper(Context context) {
//第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类
super(context, name, null, version);
}
@Override public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS person (personid integer primary key autoincrement, name varchar(20), age INTEGER)");
}
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(" ALTER TABLE person ADD phone VARCHAR(12) NULL "); //往表中增加一列
// DROP TABLE IF EXISTS person 删除表
}
}
<pre name="code" class="java"><span style="font-size:14px;"> 除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。
SQLiteOpenHelper 类的基本用法是:当需要创建或打开一个数据库并获得数据库对象时,首先根据指定的文件名创建一个辅助对象,然后调用该对象的getWritableDatabase 或 getReadableDatabase方法 获得SQLiteDatabase 对象。
调用getReadableDatabase 方法返回的并不总是只读数据库对象,一般来说该方法和getWriteableDatabase 方法的返回情况相同,只有在数据库仅开放只读权限或磁盘已满时才会返回一个只读的数据库对象。
dh = new DatabaseHelper(mContext, dbName, null, dbVersion);
mSQLiteDatabase = dh.getWritableDatabase();
然后就可以执行数据库的语句了</span>
<pre name="code" class="java"><span style="font-size:14px;">String sql = "select * from record"; cursor = mSQLiteDatabase.rawQuery(sql, null); 注意<span style="color:black;margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; border-top-style:none; border-right-style:none; border-bottom-style:none; border-left-style:none; border-width:initial; border-color:initial; background-color:inherit"><span class="comment" style="color:#0820;margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; border-top-style:none; border-right-style:none; border-bottom-style:none; border-left-style:none; border-width:initial; border-color:initial; background-color:inherit">execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句; rawQuery()方法用于执行select语句。</span></span></span><span style="font-size:14px;"> </span>//获取name列的索引
int nameIndex = cursor.getColumnIndex("name");
操作完后关闭
cursor.close();//关闭结果集
db.close();//关闭数据库对象
相关文章推荐
- 关于数据库存储过程学习的资料
- 转贴: 转一篇关于数据库SQL执行效率的文章,值得我们学习
- 关于今天数据库学习的一些内容和总结
- 数据库创建表,创建的表是关于大学生学习课的表
- 数据库创建表,创建的表是关于大学生学习课的表
- 关于用python的SQLAlchemy访问数据库的学习记录,及SQLAlchemy的安装简介
- html5 学习 关于数据库的学习---言简意赅 jquery、html、css、web
- 关于数据库中的JOIN的用法学习
- <yii 框架学习> <转> 关于yii数据库添加新字段之后model类的修改
- 关于我学习Yii框架 - 数据库relation的使用
- 关于数据库系统的学习
- 关于数据库的学习
- 关于ORACLE 数据库学习的几点建议
- 11月28日-- 关于数据库存储过程的一些学习
- 关于学习数据库开发的一点建议和忠告
- 一个关于如何学习大型数据库问题的问题
- 关于数据库学习的体会
- 关于oracle10g数据库的学习-基本操作
- 关于数据库的学习
- 关于FMDB 数据库自己看着学的,希望可以互相学习