我已经预先创建了一个数据库并放入了文件夹资产。
我创建了一个类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");
}
答案 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;
看看是否有效。