【问题标题】:Open sqlite database failed打开 sqlite 数据库失败
【发布时间】:2010-02-25 14:05:52
【问题描述】:

我把我的sqlite数据库文件放在“assets”文件夹中,我写了一个DAO calss来从数据库中获取数据,但是来自log.e的信息意味着我无法打开数据库。

公共类 GetData {

 private static String DB_PATH = "/data/data/com.SGMalls/databases/mallMapv2.sqlite";

private static SQLiteDatabase myDataBase;

public static ArrayList<Mall> getMall(){

   ArrayList<Mall> mallArrayList=new ArrayList<Mall>();

    String queryString="select id,title from malls order by title";

    myDataBase = SQLiteDatabase.openDatabase(DB_PATH,      null,SQLiteDatabase.OPEN_READONLY);

    Cursor cursor=myDataBase.rawQuery(queryString, null);

  if(cursor!=null){

    cursor.moveToFirst();

    while(!cursor.isLast()){

     Mall mall=new Mall();

     mall.setMallid(cursor.getInt(0));

     mall.setMallname(cursor.getString(1));            
    mallArrayList.add(mall);
cursor.moveToNext();
   } }
 myDataBase.close();

 return mallArrayList;

}}

【问题讨论】:

    标签: android


    【解决方案1】:

    assets/ 文件夹直接与数据库无关。如果您将数据库放在assets/ 文件夹中,则需要将其从assets/ 文件夹复制到您希望数据库驻留在实际文件系统中的位置。

    【讨论】:

    • 非常感谢。因此,如果我将数据库复制到 sdcard。那么字段路径也是/data/data/com.SGMalls/databases/mallMapv2.sqlite”?谢谢
    • 我的意思是我只是将复制路径设置为:/data/data/com.SGMalls/databases/mallMapv2.sqlite" 那么这个文件存储在哪里?嵌入这个应用程序?对不起。我是android开发的新手。
    【解决方案2】:

    看看这个link

    您必须首先调用createDataBase() 方法。如果createDataBase() 运行成功,您可以检查您的/data/data/com.SGMalls/databases/mallMapv2.sqlite 是否真的存在。

    如果它已经存在,它不会对它造成任何伤害。

    copyDataBase() 应该给你一些关于它如何从资产复制到../databases/..的解释

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-11
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      相关资源
      最近更新 更多