Android Sqlite 导入外部数据库
来源:互联网 发布:centos smtp 编辑:程序博客网 时间:2024/06/06 01:27
有时候在开发过程中,需要导入外部的数据库到本程序当中。
直接上代码:
第一步:在assets目录下创建一个databases的文件夹,将外部数据库放在databases目录下
第二部:代码实现
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import android.content.Context;import android.content.SharedPreferences;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DBHelper extends SQLiteOpenHelper { private static final String DB_NAME = "nuominew.db";//数据库名字 private static final int DB_VERSION = 2; //数据库版本号 private SQLiteDatabase db; private String filePath; //数据库存储路径 public DBHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); <strong><span style="color:#ff0000;"> // 初始化数据库路径 (这个路径不能改变,因为是保存在内部安装文件夹中的,自己写的创建数据库也在这个路径下)</span></strong> filePath = "//data//data//" + context.getPackageName() + "//databases"; <span style="color:#ff0000;"><strong>//必须实例化的时候调用此方法,否则会报错</strong></span> initExternalDB(context); db = getWritableDatabase(); } /** * 初始化外部数据库 * @param context */ private void initExternalDB(Context context) { InputStream is = null; FileOutputStream fos = null; <strong> // 打开Assets目录下的数据库文件</strong> try { is = context.getAssets().open("databases/" + DB_NAME); <strong> // 存放数据库的目录不存在,则创建</strong> File file = new File(filePath); if (!file.exists()) { file.mkdir(); } <strong> // 准备将外部库写入系统目录</strong> File dbFile = new File(filePath + "//" + DB_NAME + "//"); <strong> // 数据库文件不存在则写入</strong> SharedPreferences preferences = context.getSharedPreferences("dbVersion", 0); int dbVersion = preferences.getInt("dbVersion", 1); if (!dbFile.exists() || DB_VERSION > dbVersion) { fos = new FileOutputStream(dbFile); byte[] buf = new byte[1024]; int len = -1; while ((len = is.read(buf)) != -1) { fos.write(buf, 0, len); fos.flush(); } SharedPreferences.Editor editor = preferences.edit(); editor.putInt("dbVersion", DB_VERSION); editor.commit(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (fos != null) { fos.close(); } if (is != null) { is.close(); } } catch (IOException e) { e.printStackTrace(); } } } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (newVersion > oldVersion) { onCreate(db); } } public Cursor query(String sql, String... selectionArgs) { return db.rawQuery(sql, selectionArgs); } }
0 1
- Android Sqlite 导入外部数据库
- android之 导入外部sqlite数据库
- android 导入外部数据库
- android 导入外部数据库
- android 导入外部数据库
- android导入外部数据库
- Android导入外部数据库
- Android导入外部数据库
- android导入外部数据库
- android 使用外部sqlite数据库
- android 导入外部数据库注意事项
- [Android]如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- android导入外部已存在的数据库
- [Android]如何导入已有的外部数据库
- Android 如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- Android Studio --下载和安装
- Spring数据初始化
- java中的session和cookie
- 第二周项目--体验项目复杂度
- less入门教程二
- Android Sqlite 导入外部数据库
- 计算平方根的算法
- nodejs body-parser不支持charset=GBK,报415错误问题
- 卷积神经网络
- java面向对象概念
- java 生成和解析xml
- less入门教程三(函数手册)
- 第三周项目一顺序表的基本运算
- Android Studio二--基本设置与运行