android sqlite数据库问题

tianke0711 2014-10-16 04:22:28
求救!我想在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问题。麻烦大家手把手指点一下,怎么解决?
...全文
169 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianke0711 2014-10-17
  • 打赏
  • 举报
回复
manifest里面sd卡的读写权限给读写权限都给了啊!我的手机是三星galaxy 3s。悲剧的是我手机我不能root,我用了好多方法。有谁会搞定这个root啊
xiaocos 2014-10-16
  • 打赏
  • 举报
回复
manifest里面sd卡的读写权限给了吗?
shanluan_ 2014-10-16
  • 打赏
  • 举报
回复
权限不够。。
糖果猪猪 2014-10-16
  • 打赏
  • 举报
回复
有时候eclipse上是看不到的,你可以先把手机root,然后下载R.E管理器,在手机上通过RE管理器查看数据库有没有创建成功

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧