尝试这段代码:
- 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();
- }