博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读取sd卡上的外部数据库导入到app的数据库进行读取数据
阅读量:6916 次
发布时间:2019-06-27

本文共 3222 字,大约阅读时间需要 10 分钟。

hot3.png

需要更改代码中的数据库文件名和工程包名

外部数据库放置在assets目录中

102652_0TGJ_2311668.png

package utils;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import android.content.Context;import android.os.Environment; public class ImportDB{    private final int BUFFER_SIZE = 10000;    public static final String DB_NAME = "sqlserver"; //被保存读取的数据库文件名    public static final String PACKAGE_NAME = "com.example.imagetostring";//工程包名    public static final String DB_PATH = "/data"            + Environment.getDataDirectory().getAbsolutePath() + "/"            + PACKAGE_NAME+"/databases";  //在手机里存放数据库的位置    private Context context;    public ImportDB(Context context) {        this.context = context;    }       public void copyDatabase() {             String dbfile=DB_PATH + "/" + DB_NAME ;        try {           //执行数据库导入                InputStream is = this.context.getResources().getAssets().open("sqlserver"); //欲导入的数据库                FileOutputStream fos = new FileOutputStream(dbfile);                byte[] buffer = new byte[BUFFER_SIZE];                int count = 0;                while ((count = is.read(buffer)) > 0) {                    fos.write(buffer, 0, count);                }                              fos.close();//关闭输出流                is.close();//关闭输入流        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }     }}

主函数调用

// 导入外部数据库ImportDB db = new ImportDB(context);db.copyDatabase();

导入完成后效果图

103237_ZEAH_2311668.png

声明数据库

package db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;class sqlServer extends SQLiteOpenHelper {     private final static String DB_NAME = "sqlserver";// 数据库名称     public final static int DataBase_Version = 1;         public sqlServer(Context context) {     super(context, DB_NAME, null, DataBase_Version);  } @Override public void onCreate(SQLiteDatabase db) {  // String createDB = "create table " + DB_NAME  // + "(cityid varchar(14) primary key , cityname varchar(20),type  // int)";// 数据库中记录的属性名称及属性值类型  // db.execSQL(createDB);// 创建数据库 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  // String dropTableSQL = "DROP TABLE IF EXISTS " + DB_NAME + " ";  // db.execSQL(dropTableSQL);  // dropTableSQL = "DROP TABLE IF EXISTS " + DB_NAME + " ";  // db.execSQL(dropTableSQL);  // onCreate(db); }}

调用数据库

package db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;public class sqlDao { public static SQLiteDatabase gRSqliteDB = null; public static SQLiteDatabase gWSqliteDB = null; // -----获取可读写数据库 public static boolean getDataBase(Context context) {  try {   sqlServer dbHelper = new sqlServer(context);   if (gRSqliteDB == null) {    gRSqliteDB = dbHelper.getReadableDatabase();   }   if (gWSqliteDB == null) {    gWSqliteDB = dbHelper.getWritableDatabase();   }  } catch (Exception e) {   return false;  }  return true; } // ----数据库关闭 public static void CloseDataBase() {  if (gWSqliteDB != null) {   gWSqliteDB.close();  }  if (gRSqliteDB != null) {   gRSqliteDB.close();  } }}

转载于:https://my.oschina.net/u/2311668/blog/667966

你可能感兴趣的文章
flex ArrayCollection遍历
查看>>
工控随笔_09_西门子_S7-200 Smart与V20 USS通信USS_RPM_R利用轮询的方式通讯异常
查看>>
字段有多个图片输出方法
查看>>
C# 委托与事件
查看>>
Android引用项目出现ClassNotFoundException
查看>>
Google - chanceToLose24Game
查看>>
shiro
查看>>
《微信企业号开发日志》本地调试程序四
查看>>
Daily scrum 12.12
查看>>
php 汉语转换拼音
查看>>
Java中如何遍历Map对象的4种方法
查看>>
Office常用技巧
查看>>
Spark:saveAsTable解析
查看>>
python---数据类型---列表
查看>>
iOS-应用程序被杀死时调用的函数
查看>>
安全测试===Mysql 注入技巧学习 MySQL注入技巧(2)
查看>>
python基础===Python 迭代器模块 itertools 简介
查看>>
Leetcode 8. String to Integer (atoi)
查看>>
第二天作业
查看>>
烂泥:切割nginx日志
查看>>