需要更改代码中的数据库文件名和工程包名
外部数据库放置在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();
}
}
}