您的位置:首页 > 移动开发 > Android开发

android sqlite数据库问题

2017-01-01 02:09 288 查看
求救!我想在android真机子上导入外部数据库(我放在assest下面的raw文件下)。代码如下:

public class DBManager {
private final int BUFFER_SIZE = 400000;
public static final String DB_NAME = "Test.db";
public static final String PACKAGE_NAME = "com.example.testdatabase";
public static final String DB_PATH = "/data"+ Environment.getDataDirectory().getAbsolutePath()
                             + "/" + PACKAGE_NAME;
private SQLiteDatabase database;
private Context context;

DBManager(Context context) {
      this.context = context;
}

public void openDatabase() {
      this.database = this.openDatabase(DB_PATH + "/" + DB_NAME);
}

private SQLiteDatabase openDatabase(String dbfile) {
try {
  if(!(new File(dbfile).exists())){
  InputStream is = this.context.getResources().openRawResource(R.raw.test);
  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();
  }
  
  SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
  return db;
} catch(FileNotFoundException e) {
Log.e("Database", "File not found");
e.printStackTrace();
} catch (IOException e) {
Log.e("Database", "IO exception");
e.printStackTrace();
}
return null;
//http://jalhaskazakhlike.lofter.com/post/3f320a_15df9b3
//http://www.cnblogs.com/xiaowenji/archive/2011/01/03/1925014.html

}
  public void closeDatabase() {
        this.database.close();
    }

}


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {
    public DBManager dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new DBManager(this);
        dbHelper.openDatabase();
        dbHelper.closeDatabase();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

然后我在DDMS模式情况下,查看data文件,我发现没有找到我创建的数据库。表示创建失败了。网上说可能root问题。麻烦大家手把手指点一下,怎么解决?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: