如何在Android应用程序中添加和打开sqlite文件?

时间:2013-12-15 02:10:23

标签: android sql sqlite file-io

我在plik文件夹中有一个名为assets的文件。我的sqlhelper有一个名为databaseExist()的方法:

public boolean databaseExist()
{   
    System.out.println(DB_PATH + DB_NAME);
    File dbFile = new File(DB_PATH + DB_NAME);
    return dbFile.exists();
}

我的包名是:

package pl.mobiledietplanner;

路径和名称设置为:

private static String DB_PATH = "/data/data/pl.mobiledietplanner/databases/";
private static String DB_NAME = "plik";

在活动中我调用了这个方法:

MyDBHelper helper = new MyDBHelper(this);       
System.out.println(helper.databaseExist());

结果是:

/data/data/pl.mobiledietplanner/databases/plik
false

我按照blog所述完成了所有事情 谁能告诉我我做错了什么?

编辑:

我也按照here开了File Explorer并添加了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />。但data文件夹为空。

2 个答案:

答案 0 :(得分:0)

assegs文件夹中的文件不在您的DB_PATH中,您可以这样做:

AssetManager am = null;
·am = getAssets();
·InputStream is = am.open("filename");

然后判断输入流是否为空

注意:我的英语不太好,请不要介意

答案 1 :(得分:0)

为什么不按照您所指的博客上的checkDatabase()进行操作?

private boolean checkDataBase(){

  SQLiteDatabase checkDB = null;

  try{
    String myPath = DB_PATH + DB_NAME;
    checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

  }catch(SQLiteException e){
    //database does't exist yet.
  }

  if(checkDB != null){
    checkDB.close();
  }

  return checkDB != null ? true : false;
}