`
wsql
  • 浏览: 11716228 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

android SQLite使用SQLiteOpenHelper类对数据库进行操作

 
阅读更多

SQLiteOpenHelper的使用方法
SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。
可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。
所有继承了这个类的类都必须实现下面这样的一个构造方法:
public DatabaseHelper(Context context, String name, CursorFactory factory, int version)
第一个参数:Context类型,上下文对象。
第二个参数:String类型,数据库的名称
第三个参数:CursorFactory类型
第四个参数:int类型,数据库版本
下面是这个类的几个方法:

方法名 返回类型 描述 备注
getReadableDatabase() synchronized SQLiteDatabase 创建或打开一个数据库 可以通过这两个方法返回的SQLiteDatabase对象对数据库进行一系列的操作,如新建一个表,插入一条数据等
getWritableDatabase() synchronized SQLiteDatabase 创建或打开一个可以读写的数据库
onCreate(SQLiteDatabase db) abstract void 第一次创建的时候调用
onOpen(SQLiteDatabase db) void 打开数据库
onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) abstract void 升级数据库
close() synchronized void 关闭所有打开的数据库对象

例子:
DatabaseHelper类:

package qyq.sqlitetest.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
/**
* SQLiteOpenHelper是一个辅助类,用来管理数据库的创建和版本他,它提供两个方面的功能
* 第一,getReadableDatabase()、getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作
* 第二,提供了onCreate()、onUpgrade()两个回调函数,允许我们再创建和升级数据库时,进行自己的操作
*/
public class DatabaseHelper extends SQLiteOpenHelper{
private static final int VERSION = 1;
/** 构造方法,这个构造方法在SQLiteOpenHelper的实现类当中是必须的
* @param context 上下文对象 这里的话也就是Activity了
* @param name 数据库名称
* @param factory
* @param version 当前数据库的版本,值必须是整数并且是递增的状态
*/
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
//必须通过super调用父类当中的构造函数
super(context, name, factory, version);
}
// 构造方法
public DatabaseHelper(Context context, String name, int version) {
this(context, name, null,version);
}
// 构造方法
public DatabaseHelper(Context context, String name) {
this(context, name,VERSION);
}
// 创建或打开一个可以只读的数据库,返回 SQLiteDatabase对象
@Override
public synchronized SQLiteDatabase getReadableDatabase() {
// TODO Auto-generated method stub
return super.getReadableDatabase();
}
// 创建或打开一个可以读写的数据库,返回 SQLiteDatabase对象
@Override
public synchronized SQLiteDatabase getWritableDatabase() {
// TODO Auto-generated method stub
return super.getWritableDatabase();
}
// 第一次创建数据库时候执行,第一次得到SQLiteOpenHelper对象的时候,才会调用这个方法
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("onCreate method");
//execSQL用于执行SQL语句,创建数据库表
db.execSQL("create table users (id int,name varchar(50))");

}

@Override
public void onOpen(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("onOpen method");
super.onOpen(db);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("onUpgrade method");

}

Activity类

package qyq.sqlitetest;

import qyq.sqlitetest.db.DatabaseHelper;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class sqLiteTestActivity extends Activity {
/** Called when the activity is first created. */
// 控件的声明
private Button createDataBase = null;
private Button updateDataBase = null;
private Button insert = null;
private Button update = null;
private Button query = null;
private Button delete =null;
private EditText id = null;
private EditText name = null;
private int inputid = 0;
private String inputname = null;
// 获取控件设置OnClickListener监听器
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
createDataBase = (Button)findViewById(R.id.createDataBase);
createDataBase.setOnClickListener(new createDataBaseListener());
updateDataBase=(Button)findViewById(R.id.updateDataBase);
updateDataBase.setOnClickListener(new updateDataBaseListener());
id =(EditText)findViewById(R.id.id);
name = (EditText)findViewById(R.id.name);
insert = (Button)findViewById(R.id.insert);
insert.setOnClickListener(new insertListener());
update =(Button)findViewById(R.id.update);
update.setOnClickListener(new updateListener());
query=(Button)findViewById(R.id.query);
query.setOnClickListener(new queryListener());
delete =(Button)findViewById(R.id.delete);
delete.setOnClickListener(new deleteListener());
System.out.println("test");
}
// 监听器类
class createDataBaseListener implements OnClickListener{

@Override
public void onClick(View v) {
// 创建了一个DatabaseHelper对象,只执行这句话是不会创建或打开连接的
DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test");
// 只有调用了DatabaseHelper的getWritableDatabase()方法或者getReadableDatabase()方法之后,才会创建或打开一个连接
SQLiteDatabase db = helper.getReadableDatabase();
}
}
// 监听器类
class updateDataBaseListener implements OnClickListener{

@Override
public void onClick(View v) {
DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test",2);
SQLiteDatabase db = helper.getWritableDatabase();
}
}
// 监听器类
class insertListener implements OnClickListener{

@Override
public void onClick(View v) {
// 创建ContentValues对象
ContentValues values = new ContentValues();
// 向该对象中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致
//Integer.parseInt(id.getText().toString())从画面获取要插入的值
values.put("id",Integer.parseInt(id.getText().toString()));
values.put("name", name.getText().toString());
// 创建DatabaseHelper对象
DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test");
// 得到一个可写的SQLiteDatabase对象
SQLiteDatabase db = helper.getWritableDatabase();
// 调用insert方法,就可以将数据插入到数据库当中
// 第一个参数:表名称
// 第二个参数:SQl不允许一个空列,如果ContentValues是空的,那么这一列被明确的指明为NULL值
// 第三个参数:ContentValues对象
db.insert("users", null, values);
}
}
// 监听器类
class updateListener implements OnClickListener{

@Override
public void onClick(View v) {
ContentValues values = new ContentValues();
values.put("name", "lisiyuan");
DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test");
SQLiteDatabase db = helper.getWritableDatabase();
String id1 =id.getText().toString();
// 调用update方法
// 第一个参数String:表名
// 第二个参数ContentValues:ContentValues对象
// 第三个参数String:where字句,相当于sql语句where后面的语句,?号是占位符
// 第四个参数String[]:占位符的值
db.update("users", values, "id=?", new String[]{id1});
}
}
// 监听器类
class queryListener implements OnClickListener{

@Override
public void onClick(View v) {
DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test");
SQLiteDatabase db = helper.getReadableDatabase();
// 调用SQLiteDatabase对象的query方法进行查询,返回一个Cursor对象:由数据库查询返回的结果集对象
// 第一个参数String:表名
// 第二个参数String[]:要查询的列名
// 第三个参数String:查询条件
// 第四个参数String[]:查询条件的参数
// 第五个参数String:对查询的结果进行分组
// 第六个参数String:对分组的结果进行限制
// 第七个参数String:对查询的结果进行排序
Cursor cs=db.query("users", new String[]{"id","name"}, "id=?", new String[]{"5"}, null, null, null);
// 将光标移动到下一行,从而判断该结果集是否还有下一条数据,如果有则返回true,没有则返回false
while(cs.moveToNext()){
System.out.println(cs.getString(cs.getColumnIndex("name")));
}
}
}
// 监听器类
class deleteListener implements OnClickListener{

@Override
public void onClick(View v) {
DatabaseHelper helper = new DatabaseHelper(sqLiteTestActivity.this,"sqlite_test");
SQLiteDatabase db = helper.getWritableDatabase();
String id1 =id.getText().toString();
//调用SQLiteDatabase对象的delete方法进行删除操作
//第一个参数String:表名
//第二个参数String:where字句,相当于sql语句where后面的语句,?号是占位符
//第三个参数String[]:占位符的值
db.delete("users", "id=?", new String[]{id1});
}
}
}


}

分享到:
评论

相关推荐

    Android 数据库 SQlite 范例 SQLiteOpenHelper

    对Android数据库SQlite的基本操作,打开或新建数据库,增,删,改,查。 SQLiteOpenHelper类的运用。 ListView的运用和适配器的使用。 Menu键的使用。

    Android利用listview控件操作SQLite数据库实例

    Android为了操作SQlite数据库,提供了SQLiteDatabase类,其内封装了insert 、delete、update 、query 、执行SQL命令等操作。同时又为SQLiteDatabase提供了一个辅助类,SQLiteOpenHelper。它提供了两个重要的方法,...

    安卓Android sqlite万能数据库

    安卓里常用的存储有方法中少不了数据库的使用,主要是对单表的操作,多表的操作此处不涉及。 每次使用数据库都会有繁琐的代码要写,大致思路是继承自SQLiteOpenHelper写一个数据库操作子类,然后重写onCreate方法,写...

    android 项目利用SQLiteOpenHelper创建数据库文件Demo

    android项目添加数据库,利用SQLiteOpenHelper创建数据库文件的Demo

    在android studio中用SQLiteOpenHelper()方法建立数据库

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

    Android例子源码解决多线程读写sqlite数据库锁定问题

    对于这样的问题,解决的办法就是keep single sqlite connection,保持单个SqliteOpenHelper实例,同时对所有数据库操作的方法添加synchronized关键字。完美解决sqlite的 database locked 或者是 error 5: database ...

    Android 使用SQLite数据库

    android数据库使用真的很不错 SQLiteOpenHelper 创建数据库和数据库版本管理的辅助类。这是一个抽象类,所以我们一般都有一个SQLiteOpenHelper子类,需要继承实现 • void onCreate(SQLiteDatabase db) 在数据库第...

    Android课程试验报告-实现数据库存储.docx

    1.建立DbHelper类: ...import android.database.sqlite.SQLiteOpenHelper; public class DbHelper extends SQLiteOpenHelper { public DbHelper(Context context, String name, CursorFactory factory,

    Android studio App开发 SQLite数据的使用

    update完整操作实例创建SQLiteOpenHelper类创建数据库调用和操作类与DatabaseButtonActivity 相关联的XML文件运行效果结语 SQLite数据库 简介 SQLite数据库是开源嵌入式数据库,支持的数据库大小为2TB. SQLite

    Android SQLite 数据库详细介绍

    ndroid SQLite 数据库详细...因为这种需求是每个数据库应用都要面临的,所以在Android系统,为我们提供了一个名为SQLiteOpenHelper的抽象类,必须继承它才能使用,它是通过对数据库版本进行管理来实现前面提出的需求。

    Android 解决sqlite无法创建新表的问题

    使用SQLite时,继承SQLiteOpenHelper, onCreate方法只有在第一次创建数据库的时候才会被调用, 因此,重新更改或者添加表时,需要在DDMS里面删掉原来的.db文件,重新运行,就可以~ 补充知识:Android studio ...

    android SQLite开发实例

    这个代码合适初学者使用 使用android 嵌入式sqlite数据库SQLiteOpenHelper进行增删查改的几种写法。包括数据库的事务的使用技巧。很多的注释,合适初学进进行学习使用。

    android之利用SQLite实现登陆和注册

    android之利用SQLite数据库实现登陆和注册,使用SQLiteOpenHelper抽象类建立数据库,建立数据库类DatabaseHelper,写业务类实现查询和插入

    C#解决SQlite并发异常问题的方法(使用读写锁)

    Android提供了SqliteOpenHelper类,加入Java的锁机制以便调用。但在C#中未提供类似功能。 作者利用读写锁(ReaderWriterLock),达到了多线程安全访问的目标。 using System; using System.Collections.Generic; ...

    SuperDB,演示使用SQLiteOpenHelper继承子类操作数据库例子

    SuperDB,演示使用SQLiteOpenHelper继承子类操作数据库例子,演示数据库的增删查等操作。

    Android 对sqlite的封装,实现CRUD

    大家好,个人觉得用Sqlite数据库时,经常需要进行机械性的CRUD操作,故对其进行了一下封装,希望能起到抛砖引玉的作用。 目的:封装共有的CRUD 下面简单的说一下使用步骤,如果觉得多余,可以无视。 1. 实现自己...

    android连接SQLite数据库源代码

    提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 A、 在SQLiteOpenHelper的子类当中,必须要有的构造函数 B、该函数是在第一次创建数据库的时候执行,实际上是在第一次得到...

    android SQLite

    android SQLite SQLiteOpenHelper 数据库

    Android的使用SQLite

    使用SQLiteOpenHelper类操作数据库是官方提供的一个官方帮助类

Global site tag (gtag.js) - Google Analytics