需要更改代码中的数据库文件名和工程包名
外部数据库放置在assets目录中
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();
导入完成后效果图
声明数据库
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(); } }}