`
piperzero
  • 浏览: 3471820 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Android--类--SQLiteOpenHelper使用示例--01

 
阅读更多
Android SQLiteOpenHelper使用示例
我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。
onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。
除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。
SQLiteOpenHelper 类的基本用法是:当需要创建或打开一个数据库并获得数据库对象时,首先根据指定的文件名创建一个辅助对象,然后调用该对象的 getWritableDatabase 或 getReadableDatabase方法 获得SQLiteDatabase 对象。
调用getReadableDatabase 方法返回的并不总是只读数据库对象,一般来说该方法和getWriteableDatabase 方法的返回情况相同,只有在数据库仅开放只读权限或磁盘已满时才会返回一个只读的数据库对象。
下面通过一个简单的小例子说明SQLiteOpenDatabase的用法,其中包括创建数据库、插入数据、更新 、查询等等,我们将查询后获取到的数据显示到TextView上,看一下运行后的效果。

MySQLiteHelper
package xiaohang.zhimeng;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class MySQLiteHelper extends SQLiteOpenHelper{
//调用父类构造器
public MySQLiteHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}

/**
* 当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行.
* 重写onCreate方法,调用execSQL方法创建表
* */
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists hero_info("
+ "id integer primary key,"
+ "name varchar,"
+ "level integer)");

}

//当打开数据库时传入的版本号与当前的版本号不同时会调用该方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}

}
Activity01
package xiaohang.zhimeng;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;

public class Activity01 extends Activity {
MySQLiteHelper myHelper;
TextView tv;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.tv);
//创建MySQLiteOpenHelper辅助类对象
myHelper = new MySQLiteHelper(this, "my.db", null, 1);
//向数据库中插入和更新数据
insertAndUpdateData(myHelper);
//查询数据
String result = queryData(myHelper);
tv.setTextColor(Color.RED);
tv.setTextSize(20.0f);
tv.setText("名字\t等级\n"+result);

}

//向数据库中插入和更新数据
public void insertAndUpdateData(MySQLiteHelper myHelper){
//获取数据库对象
SQLiteDatabase db = myHelper.getWritableDatabase();
//使用execSQL方法向表中插入数据
db.execSQL("insert into hero_info(name,level) values('bb',0)");
//使用insert方法向表中插入数据
ContentValues values = new ContentValues();
values.put("name", "xh");
values.put("level", 5);
//调用方法插入数据
db.insert("hero_info", "id", values);
//使用update方法更新表中的数据
//清空ContentValues对象
values.clear();
values.put("name", "xh");
values.put("level", 10);
//更新xh的level 为10
db.update("hero_info", values, "level = 5", null);
//关闭SQLiteDatabase对象
db.close();
}

//从数据库中查询数据
public String queryData(MySQLiteHelper myHelper){
String result = "";
//获得数据库对象
SQLiteDatabase db = myHelper.getReadableDatabase();
//查询表中的数据
Cursor cursor = db.query("hero_info", null, null, null, null, null, "id asc");
//获取name列的索引
int nameIndex = cursor.getColumnIndex("name");
//获取level列的索引
int levelIndex = cursor.getColumnIndex("level");
for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) {
result = result + cursor.getString(nameIndex)+ "\t\t";
result = result + cursor.getInt(levelIndex)+" \n";
}
cursor.close();//关闭结果集
db.close();//关闭数据库对象
return result;
}

@Override
protected void onDestroy() {
SQLiteDatabase db = myHelper.getWritableDatabase();//获取数据库对象
//删除hero_info表中所有的数据 传入1 表示删除所有行------>点击back按钮
db.delete("hero_info", "1", null);
super.onDestroy();
}
}

分享到:
评论

相关推荐

    android SQLiteOpenHelper使用示例

    NULL 博文链接:https://byandby.iteye.com/blog/836250

    android app 示例 SQLiteOpenHelper 实现数据操作

    NULL 博文链接:https://davidhhs.iteye.com/blog/2150780

    android-content-provider-sample:实施Android内容提供商的示例

    android-content-provider-sample 这是一个Android示例应用程序,显示了如何使用内容提供程序。 它管理着一个简单的人名数据库。 PeopleActivity在ListView中显示所有名称,而EditPersonActivity允许您编辑一个人...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--数据库SQLiteOpenHelper标准写法 |--数据库复杂多表查询 |--数据库查询之归属地 |--数据库直接CURD |--数据提交无需权限 |--文件之从服务器下载 |--文件之拷贝文件至某个目录 |--文件之指定编码读写文件 |--文件...

    Android应用开发揭秘pdf高清版

    最重要的是还全面介绍了如何利用原生的C,C++(NDK)和Python、Lua等脚本语言(AndroidScriptingEnvironment)来开发Android应用,《Android应用开发揭秘》实战性强,书中的每个知识点都有配精心设计的示例,尤为...

    android-sqlite-helper:适用于AndroidSDKSQLite助手

    sqlite助手 sqlite-wrapper-[DRAFT]适用于AndroidSDK的非常简单SQLite帮助器 警告 目前状态正在草拟中。 这是一个发展版本。...使用AndroidStudio 1.0.0或更高版本进行开发 使用testDebugUnitTest任务运行单元测试

    DBHelperExample:这是一个扩展 SQLiteOpenHelper 的 DBHelper 示例

    数据库助手示例这是一个 Android DBHelper 示例,它扩展了 SQLiteOpenHelper

    疯狂Android讲义源码

     8.3.7 SQLiteOpenHelper类 330  8.4 手势(Gesture) 335  8.4.1 手势检测 335  8.4.2 增加手势 342  8.4.3 识别用户的手势 346  8.5 自动朗读(TTS) 347  8.6 本章小结 350  第9章 使用ContentProvider...

    Android程序设计基础

     有些章使用了一个公共的示例:Android数独游戏。通过逐渐在游戏中添加特性,你将学习Android编程的许多方面,包括用户界面、多媒体和Android生命周期。..  第一部分中将首先介绍Android,内容涉及如何安装...

    Android基础教程

    9.3.1 使用SQLiteOpenHelper 9.3.2 定义主程序 9.3.3 添加一行 9.3.4 运行一个查询 9.3.5 显示查询结果 9.4 数据绑定 9.5 使用ContentProvider 9.5.1 更改主程序 9.5.2 添加一行 9.5.3 运行一个查询 9.6 实现...

    Android studio App开发 SQLite数据的使用

    目录SQLite数据库简介SQLiteOpenHelper主要方法构造方法onCreate方法onUpgradegetWritableDatabase() 和getReadableDatabase()方法SQLiteOpenHelper类的完整示例代码SQLiteDatabase主要方法增 AddDelete 删查 query...

    【android编程】第十一讲-数据储存

    使用SharedPreferences示例2.SQLite数据库编程SQLiteOpenHelper类 常用方法自定义数据库子类(继承 SQLiteOpenHelper 类)创建数据库:getWritableDatabase()、getReadableDatabase()操作数据库(增、删、查、改...

    android创建数据库(SQLite)保存图片示例

    创建数据库public class DBService extends SQLiteOpenHelper { private final static int VERSION = 1;private final static String DATABASE_NAME = “uniteqlauncher.db”; public DBService(Context context) {...

    Android开发实现读取assets目录下db文件的方法示例

    主要介绍了Android开发实现读取assets目录下db文件的方法,结合实例形式分析了Android针对assets目录下SQLite数据库文件的相关操作技巧,需要的朋友可以参考下

    Android SQLite数据库操作代码类分享

    使用示例: package cn.hackcoder.beautyreader.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util....

    AHibernate1.1

    更多使用示例见博客: http://blog.csdn.net/lk_blog 早期版本AHibernate1.0下载地址:http://download.csdn.net/detail/lk_blog/4222048 本版主要修改的内容: 1.修改bug,实体类的属性定义为int时自动生成Id正常,定义...

    AndroidSqliteHelper:Android sqlite 辅助库

    SQLiteOpenHelper 的基(父)类 public class DBAdapter extends SQLiteOpenHelper {// Database configurationprivate static final String APP_PACKAGE = " your.package.name/ " ;private static final String DB...

Global site tag (gtag.js) - Google Analytics