android中如何读取已经在sqlite expert professional等sqlite工具设计好的数据库文件并且在程序中创建数据库

在我们经常开发android程序的时候,为了提高我们的开发效率和方便程序的维护性,一般是会在sqlite expert professional等sqlite工具设计好之后,放在assets文件夹下或者在res文件夹下创建raw文件夹存放已经设计好的数据库文件。由于之前在做android开发程序中涉及到sqlite开发的时候,都是在程序中用sql语句创建表。所以觉得有点麻烦,但是我们可以类似于主流数据库一样实现设计好数据库,在android通过我们标准的java的IO流实现数据库文件的读写进而创建数据库中的表。但是我比较习惯于放在assets下读取已经设计好的数据库文件。下面来看看我的实现代码吧........

我们实现定义好一个关于数据库信息的常量类(DBConfigurationConstant):

package com.book.constant;

import android.os.Environment;

public class DBConfigurationConstant {

	public static final String db_path="/data/data/com.book.activity/databases/";
	public static final String db_name="book.db";
	public static final String ASSETS_NAME="book.db";
	public static final  int DB_VERSION = 1;
	public static int oldVersion = -1;
}

接着我们定义一个DBHelper,专门负责对android中的sqlite数据库的操作:

package com.book.db;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;

import com.book.activity.BookMainActivity;
import com.book.constant.DBConfigurationConstant;

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

public class DBHelper extends SQLiteOpenHelper{
	private Context mContext;//定义上下文
	private SQLiteDatabase mydatabase;
	public DBHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
		mContext = context;
		// TODO Auto-generated constructor stub
	}
	/**
	 * 用于创建数据库
	 */
	public DBHelper(Context context, String name,int version){
		this(context, name, null, version);
	}
	public DBHelper(Context context, String name){
		this(context,name,DBConfigurationConstant.DB_VERSION);
	}
	public DBHelper(Context context){
		this(context,DBConfigurationConstant.db_path+DBConfigurationConstant.db_name);
	}
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
	}
	  /**
	   * 数据库升级时调用
	   * */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		
	}
	/**
	 * 创建数据库中的表,我们只需调用这个函数就会实现在android中创建数据库和表,他的实质是通过java标准的文件流来实现
	 */
	public void createDatabase(){
			try{
				String databasePath=DBConfigurationConstant.db_path+DBConfigurationConstant.db_name;
				Log.i("Other", "创建数据库"+databasePath);
				File filedatabse=new File(databasePath);
				Log.i("Other", "是否存在"+filedatabse.exists());
		    	if(!filedatabse.exists()){
		    		//赋值asseets中的数据库文件到DB_PATH下
		    		filedatabse.getParentFile().mkdirs();
					copyDataBase(databasePath);
		    	}
				
			}catch(Exception e){
				e.printStackTrace();
			}
	}
	public void copyDataBase(String dbfile) throws Exception{
		InputStream ins=mContext.getAssets().open(DBConfigurationConstant.ASSETS_NAME);//得到放在assets文件夹下的已经创建好的数据库文件流
		FileOutputStream fos=new FileOutputStream(dbfile);
		byte[] buffer=new byte[1024];
		int length;
		while((length=ins.read(buffer))>0){//开始assets文件夹下的数据库文件写到android中下的
			fos.write(buffer, 0, length);
		}
		mydatabase=SQLiteDatabase.openOrCreateDatabase(dbfile, null);
		fos.flush();
		fos.close();
		ins.close();
	}
}


注册方法 复制 license2.key 到安装目录即可。 可视化管理工具。允许用户在 SQLite 服务器上执行创建、编辑、复制、提取等操作。 SQLite Expert Professional是一款可视化的数据库管理工具,允许用户在 SQLite 服务器上执行创建、编辑、复制、提取等操作。SQLite Expert支持所有的图形界面的SQLite特征。它包括一个可视化查询生成器,一个SQL编辑与语法突出和代码自动完成,强大的table和view设计与导入导出功能。 支持平台:windows 2000,XP,VISTA,7。 可视SQL查询生成器 轻松建立复杂的SQL查询。 格式化的SQL查询文本布局。 SQL查询解析和分析的有力手段。 高级SQL编辑器与语法高亮和代码完成。 强大的重组功能 表列,索引,外键,触发器,独特和检查约束的可视化编辑器。 任何复杂的表,而不会丢失数据重组。 任何重组操作被包裹在一个嵌套事务回滚,如果发生任何错误更改应用时。 导入和导出数据 从ADO数据源,CSV文件,SQL脚本或SQLite导入数据。 数据导出到CSV文件,SQL脚本,Excel或SQLite的。 使用拖放操作之间的SQLite数据库复制表。 通过剪贴板的数据导出到Excel。 数据编辑 在使用功能强大的就地编辑网格的编辑数据。 图像编辑器目前支持JPEG,PNG,BMP,GIF和ICO图像格式。 使用集成的十六进制编辑器可视化和修改BLOB字段。 Version 3.5 Improved license registration process. Added support for partial indexes. Added support for tables without rowid.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值