`
从此醉
  • 浏览: 1040794 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

Android中SQLite数据库操作(2)——SQLiteOpenHelper类

 
阅读更多

如果开发者对SQL语法不熟悉,我要告诉你一个好消息,Android提供了一个SQLiteOpenHelper类。

在实际项目中很少使用SQLiteDatabase的方法(请看:http://blog.csdn.net/dawanganban/article/details/9832425)来打开数据库,通常都会继承SQLiteOpenHelper开发子类,并通过该子类的getReadableDatabase(),getWritableDatabase()方法打开数据库。

SQLiteOpenHelper是Android提供的一个管理数据库的工具类,可用于管理数据库的创建和版本更新。

一般的用法是继承SQLiteOpenHelper并重写onCreate()和onUpdate()方法。

我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个 方法。

onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。

onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。

除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。

SQLiteOpenHelper 类的基本用法是:当需要创建或打开一个数据库并获得数据库对象时,首先根据指定的文件名创建一个辅助对象,然后调用该对象的getWritableDatabase 或 getReadableDatabase方法 获得SQLiteDatabase 对象。调用getReadableDatabase 方法返回的并不总是只读数据库对象,一般来说该方法和getWriteableDatabase 方法的返回情况相同,只有在数据库仅开放只读权限或磁盘已满时才会返回一个只读的数据库对象。下面通过一个简单的小例子说明SQLiteOpenDatabase的用法,其中包括创建数据库、插入数据、更新 、查询等等,我们将查询后获取到的数据显示到TextView上,看一下运行后的效果。

android SQLiteOpenHelper使用示例 - 战狼 - 战狼

MySQLiteHelper
Java代码


package com.example.testsqlite;

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

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
Java代码


package com.example.testsqlite;

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 MainActivity extends Activity {
	MySQLiteHelper myHelper;
	TextView tv;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_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 studio中用SQLiteOpenHelper()方法建立数据库

    今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenHelper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,在...

    Android项目设计与开发:SQLite 1.ppt

    SQLite Android为了让我们更加方便地管理数据库,提供了SQLiteOpenHelper帮助类协助我们管理数据库。 SQLite SQLiteOpenHelper 有两个抽象方法,分别是onCreate和onUpgrade,他们分别是数据库创建和数据库版本升级...

    android SQLite数据库总结

    SQLiteOpenHelper——封装好的数据库操作辅助类,需重写 重写方法 onCreate:初始化数据库,创建表,添加初始数据 onUpgrade:数据库版本升级时的数据库操作,如备份删除数据库等 常用方法 getReadableDatabase() ...

    Android数据持久化之SQLite数据库用法分析

    SQLite数据库是android系统自带的,主要用到的类包括SQLiteOpenHelper和SQLiteDatabase。 1、SQLiteOpenHelper:创建数据库和数据库版本管理的辅助类,该类是一个抽象类,所以我们一般都有一个子类SQLiteOpenHelper...

    Android数据库(SQLite)的简单使用——增、删、查改功能的简单实现

    先写一个类继承SQLiteOpenHelper,因为SQLiteOpenHelper.java是一个Android提供的抽象类,我们要使用就写一个类继承它~ OpenHelper.java public class OpenHelper extends SQLiteOpenHelper { public OpenHelper...

    Android开发与应用——张荣,原书配套课件

    6.4 SQLite数据库 6.4.1 SQLite基本操作 6.4.2 SQLiteOpenHelper 6.5 Content Provider 6.5.1 使用Content Provider发布数据 6.5.2 使用Content Resolver获取数据 6.6 小结 练习 第7章 多线程及消息...

    Android项目设计与开发:SQLite 3.ppt

    嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 3 SQLite 内容: SQLite如何插入数据。 (1)SQL语句。insert into table…value() (2)使用SQLiteOpenHelper接口 实验 通过SQLiteOpenHelper接口insert ...

    Android项目设计与开发:SQLite 4.ppt

    嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 4 SQLite 内容: SQLite如何删除数据。 (1)SQL语句。delete from table where.. (2)使用SQLiteOpenHelper接口 实验 通过SQLiteOpenHelper接口delete 来...

    android开发揭秘PDF

    第2章 Android开发环境搭建 2.1 Android开发准备工作 2.2 开发包及其工具的安装和 配置 2.2.1 安装JDK和配置Java开发 环境 2.2.2 Eclipse的安装与汉化 2.2.3 SDK和ADT的安装和 配置 2.3 创建第一个Android项目——...

    Android实现通讯录功能

    2、技术要点:SQLite的基本操作 3、实现步骤: ① 创建一个类继承SQLiteOpenHelper ② 重写父类构造方法、onCreate()、onUpgrade() ③ 增删改查 4、效果图 5、案例代码 MyHelper.java package ...

    《Android应用开发揭秘》附带光盘代码.

     第2章 Android开发环境搭建  2.1 Android开发准备工作  2.2 开发包及其工具的安装和  配置  2.2.1 安装JDK和配置Java开发  环境  2.2.2 Eclipse的安装与汉化  2.2.3 SDK和ADT的安装和  配置  2.3 创建第...

    Android程序设计基础

    这一部分介绍外部通信、基于位置的服务、内置SQLite数据库和三维图形。  本书最后提供了一个附录,其中列出了Android与Java SE(Java Standard Edition,Java标准版)之间的不同之处。 . 在线资源  本书网站...

    《Android应用开发揭秘》源码

     2.3 创建第一个Android项目——HeUoAndroid  2.3.1 创建HelloAndroid项目  2.3.2 运行HelloAndroid及模拟器的使用  2.3.3 调试HelloAndroid  2.4 小结  第二部分 基础篇  第3章 Android程序设计基础  3.1 ...

    Android应用开发揭秘pdf高清版

    2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 调试HelloAndroid 2.4 小结 第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 ...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Sqlite 一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中 W3C 万维网联盟,创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。主要的工作是发展 Web 规范,...

    Android通讯录案例

    实战演练——通讯录 功能描述:通过SQLite实现数据库的增删改查 ...① 创建一个类继承SQLiteOpenHelper ② 重写父类构造方法、onCreate()、onUpgrade() ③ 增删改查 效果图 作者:Supper猿

Global site tag (gtag.js) - Google Analytics