数据库操作无法在Android

时间:2015-07-20 05:47:52

标签: android database sqlite

我已经预先创建了一个数据库并放入了文件夹资产。

我创建了一个类DatabaseHelper,并在该类中创建了一个方法checkDataBase,它打开了数据库,如果操作成功,它将返回1,否则为0。

然后我从我的主要活动中调用checkDataBase方法。 如果它返回true,我只需更改其中一个文本字段的文本。

但每次我运行代码来调用checkDataBase方法时,我的应用都会崩溃。

以下是我的代码:

 import android.content.Context;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteException;
 import android.database.sqlite.SQLiteOpenHelper;

 public class DatabaseHelper extends SQLiteOpenHelper{

 public static String DB_Path ="/data/data/com.myapp/app/src/databases";
 private SQLiteDatabase mydatabase;
 private static String DB_NAME = "mydb.sqlite";
 private final Context myContext;

 public DatabaseHelper(Context context) {

     super(context, DB_NAME, null, 1);
     this.myContext = context;
 }
 public 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.
    }



    return checkDB != null ? true : false;
}
@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

 //code to call from main activity
 DatabaseHelper d;
 if(d.checkDataBase())
    {
        txtQue.setText("true");
    }

1 个答案:

答案 0 :(得分:0)

问题可能在于如何构建连接字符串,即openDatabase的参数。

public static String DB_Path ="/data/data/com.myapp/app/src/databases";
private static String DB_NAME = "mydb.sqlite";
...

String myPath = DB_Path + DB_NAME; 
/* myPath here is now "/data/data/.../databasesmydb.sqlite", probably not
   the inteded path */

请改为尝试:

String myPath = DB_Path + "/" + DB_NAME;

看看是否有效。