尝试这段代码:
public class DataBaseHelper extends sqliteOpenHelper { private Context mycontext; //private String DB_PATH = mycontext.getApplicationContext().getPackageName()+"/databases/"; private static String DB_NAME = "(datbasename).sqlite"; //the extension may be .sqlite or .db public sqliteDatabase myDataBase; /*private String DB_PATH = "/data/data/" + mycontext.getApplicationContext().getPackageName() + "/databases/";*/ public DataBaseHelper(Context context) throws IOException { super(context,DB_NAME,null,1); this.mycontext = context; boolean dbexist = checkdatabase(); if (dbexist) { //System.out.println("Database exists"); opendatabase(); } else { System.out.println("Database doesn't exist"); createdatabase(); } } public void createdatabase() throws IOException { boolean dbexist = checkdatabase(); if (dbexist) { //System.out.println(" Database exists."); } else { this.getReadableDatabase(); try { copydatabase(); } catch (IOException e) { throw new Error("Error copying database"); } } } private boolean checkdatabase() { //sqliteDatabase checkdb = null; boolean checkdb = false; try { String myPath = DB_PATH + DB_NAME; File dbfile = new File(myPath); //checkdb = sqliteDatabase.openDatabase(myPath,sqliteDatabase.OPEN_READWRITE); checkdb = dbfile.exists(); } catch (sqliteException e) { System.out.println("Database doesn't exist"); } return checkdb; } private void copydatabase() throws IOException { //Open your local db as the input stream InputStream myinput = mycontext.getAssets().open(DB_NAME); // Path to the just created empty db String outfilename = DB_PATH + DB_NAME; //Open the empty db as the output stream OutputStream myoutput = new FileOutputStream("/data/data/(packagename)/databases/(datbasename).sqlite"); // transfer byte to inputfile to outputfile byte[] buffer = new byte[1024]; int length; while ((length = myinput.read(buffer)) > 0) { myoutput.write(buffer,length); } //Close the streams myoutput.flush(); myoutput.close(); myinput.close(); } public void opendatabase() throws sqlException { //Open the database String mypath = DB_PATH + DB_NAME; myDataBase = sqliteDatabase.openDatabase(mypath,sqliteDatabase.OPEN_READWRITE); } public synchronized void close() { if (myDataBase != null) { myDataBase.close(); } super.close(); }