我把我的sqlite数据库文件放在“assets”文件夹中我写了一个DAO calss来从数据库中获取数据,但log.e中的信息意味着我无法打开数据库。
public class 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;
}}
答案 0 :(得分:1)
assets/
文件夹直接与数据库无关。如果将数据库放在assets/
文件夹中,则需要将其从assets/
文件夹复制到您希望数据库驻留在实际文件系统中的位置。
答案 1 :(得分:1)
看看这个link。
您必须先调用createDataBase()
方法。如果createDataBase()
成功运行,您可以检查/data/data/com.SGMalls/databases/mallMapv2.sqlite
是否真的存在。
如果它已经存在,它不会对它造成任何伤害。
copyDataBase()
应该给你一些解释,说明如何从资产复制到../ databases /.../ p>