当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

Context和SQLiteOpenHelper创建数据库

发表于: 2015-03-02   作者:百合不是茶   来源:转载   浏览:
摘要:        一直以为安卓数据库的创建就是使用SQLiteOpenHelper创建,但是最近在android的一本书上看到了Context也可以创建数据库,下面我们一起分析这两种方式创建数据库的方式和区别,重点在SQLiteOpenHelper     一:SQLiteOpenHelper创建数据库:   1,SQLi

       一直以为安卓数据库的创建就是使用SQLiteOpenHelper创建,但是最近在android的一本书上看到了Context也可以创建数据库,下面我们一起分析这两种方式创建数据库的方式和区别,重点在SQLiteOpenHelper

 

 

一:SQLiteOpenHelper创建数据库:

 

1,SQLiteOpenHelper是一个抽象类,使用SQLiteOpenHelper创建数据库需要使用类来继承这个抽象的方法,SQLiteOpenHelper用来创建,打开,升级数据库的最佳方式,SQLiteOpenHelper不会在程序启动时就直接创建数据库 而是当需要需要操作是先检查数据库是否存在 如果不存在就会执行SQLiteOpenHelper的onCreate()方法

 

    2,SQLiteOpenHelper会在打开数据库实例后来缓存数据库对象,以便使用数据库时更加方便,而不是在应用程序中环讯打开

 

    3,在进行数据库的写入数据时,需要判断是否有权限,磁盘是否还能进行写的操作,getWritableDatabase();获得数据库的操作对象

 

  创建数据数据库的表和结果

package com.sqlite.DB;

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

/**
 * 
 * @author Administrator Sqlite的简单使用
 * 
 *         SQLite是android中内嵌的,不需要自己安装
 * 
 *         SQLite的使用,创建数据库的类继承SQLiteOpenHelper类 ,重写三个方法 OnCreate();创建数据库
 *         OnUpgrading();跟新数据库
 * 
 * 
 */
public class DBAdapter extends SQLiteOpenHelper {

	// static final String KEY_ROWID = "_id";
	// static final String KEY_NAME = "name";
	// static final String KEY_EMAIL = "email";
	// static final String TAG = "DBAdapter";
	// static final String DATABASE_NAME = "MyDB";
	// static final String DATABASE_TABLE = "contacts";
	// static final int DATABASE_VERSION = 1;
	// static final String DATABASE_CERATE =
	// "create table contacts(_id integer primary key autoincrement,"
	// + "name text not null,email text not null);";

	// 数据库类的构造构造构造方法
	public DBAdapter(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);

	}

	@Override
	// 创建表
	public void onCreate(SQLiteDatabase db) {
		//创建表
		String sql = "create table contacts('_id integer primary key autoincrement,name text not null,callphone integernoy null')";
		db.execSQL(sql);
	}

	@Override
	// 数据库的版本改变时,触发该方法
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

	}

}

 

创建数据库并操作数据库

package com.sqlite.DB;

import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.provider.Contacts.Intents.Insert;
//操作操作数据库的类
public class DemoDB extends Activity{
	

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		//创建SQLiteOpenHelper对象需要重写四个参数
		//参数一:上下文
		//参数二:数据库的创建的数据库名字
		//参数三:游标工厂表示使用系统的默认游标 一般为null
		//参数四:版本号
//创建数据库
		DBAdapter db = new DBAdapter(this, "main_user.db", null, 1);
		
		//判断数据库是否可写,不可写提示,获得数据库的操作对象
		SQLiteDatabase database=db.getWritableDatabase();
		
		if(database==null){
			//获得写的操作
			database=db.getReadableDatabase();
		}
		//插入数据
		String sql="insert into contacts(null,'张丹枫',13409909089)";
		database.execSQL(sql);//执行sql语句
		database.close();//数据库的使用完后必须关闭
		
	}
}

 

二;使用Context创建数据库等操作

 

     使用Context对象的openOrCreateDatabase操作数据库,而不是使用SQLiteOpenHelper 创建数据库

 

//使用上下文创建数据库
//参数一:数据库的名字
//参数二:数据库的模式
//参数三:游标  一般为null
SQLiteDatabase db=this.openOrCreateDatabase("user", MODE_PRIVATE, null);

 

 

 

创建数据库后必须要出路原来SQLiteOpenHelper 的onCreate()创建数据库和更新数据库的方法onUpgrade(),这时就需要execSQl方法来处理,这种方式将数据库的创建和打开推迟到需要的时候进行操作,是一种比较友好的方式

 

Context和SQLiteOpenHelper创建数据库

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在应用开发时,可能随着需求或者其他因素,原设计的数据字段不够了需要重新新增或者删除字段,又或
上次我使用SQLiteDatabase来操作数据库,但更常见的是使用SQLiteDatabase来操作SQLite. 一般的用法
/**************************************************** 大家都知道写博客会很累的,大热天的。 希
1.MyDatabaseHelper.java代码如下: package org.lxh.demo; import android.content.Context; impor
一、 SQLite介绍 SQLite是android内置的一个很小的关系型数据库。 SQLite的官网是http://www.sqlite.
转自:http://byandby.iteye.com/blog/835580,转载请标明出处! 一、 SQLite介绍 SQLite是android
/********************************************************************************************
一、 SQLite介绍 SQLite是android内置的一个很小的关系型数据库。 SQLite的官网是http://www.sqlite
原文地址:http://byandby.iteye.com/blog/835580 一、 SQLite介绍 SQLite是android内置的一个很小
一、 SQLite介绍 SQLite是android内置的一个很小的关系型数据库。 SQLite的官网是http://www.sqlite
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号