Android SQLite openOrCreateDatabase未知错误(代码14):无法打开数据库
我正在尝试学习android的sqlite。 我创建了一个Helper类,它应该打开我的数据库并执行Helper类所做的任何操作 我的问题是,由于此错误,我甚至无法打开数据库: android.database.sqlite.SQLiteCantoPendDatabaseException:未知错误(代码14):无法打开数据库 这是我的DatabaseHelper类的相关代码,错误在openOrCreateDatabase行中:Android SQLite openOrCreateDatabase未知错误(代码14):无法打开数据库,android,database,sqlite,Android,Database,Sqlite,我正在尝试学习android的sqlite。 我创建了一个Helper类,它应该打开我的数据库并执行Helper类所做的任何操作 我的问题是,由于此错误,我甚至无法打开数据库: android.database.sqlite.SQLiteCantoPendDatabaseException:未知错误(代码14):无法打开数据库 这是我的DatabaseHelper类的相关代码,错误在openOrCreateDatabase行中: public class DatabaseHelper<T&
public class DatabaseHelper<T> implements IDatabaseHelper{
private static final String DATABASE_NAME = "myDatabase.db";
private static String DATABASE_PATH = "";
private static final int DATABASE_VERSION = 1;
private static SQLiteDatabase database;
private static Context ctx;
//constructor
public DatabaseHelper(Context context){
ctx = context;
DATABASE_PATH = ctx.getFilesDir().getPath();
}
//apertura database
public boolean OpenDB() {
//try{
database = SQLiteDatabase.openOrCreateDatabase(DATABASE_NAME, null, null);
return true;
}
我真的找不到解决办法。任何帮助都将不胜感激。谢谢你的建议
PS:我没有在porpouse上扩展SQLiteOpenHelper,因为我希望对操作有更多的控制,因为我试图对所有类只使用一个helper。您应该调用DatabaseHelper构造函数上的super
//constructor
public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
ctx = context;
DATABASE_PATH = ctx.getFilesDir().getPath();
}
调用
SQLiteDatabase.openOrCreateDatabase
时,第一个参数(String path
)应该是文件系统的完整路径,请从getFilesDir()
或类似调用将其设置为文件系统的完整路径filesystem@pskink谢谢你的回复,我该怎么做?GetFileDir().getpath()还不够吗?你正在用DATABASE\u NAME
调用openOrCreateDatabase
,它只是简单的“myDatabase.db”,而不是“/full/path/to/my/DATABASE.db”@pskink我在睡觉。。浪费了一个小时,因为我以为我已经在做path+dbname。。非常感谢你救了我一天!如果你添加一个回复,我会将其设置为正确的:)更多的咖啡人,更多的咖啡…谢谢你快速回复,我在这个问题上遇到了错误,我应该为我的类添加一些东西来使用super?我得到“Object()in Object cannot application to”我想你应该扩展SQLiteOpenHelper,看看这个例子:不,我最后在“PS”中写的,我不想扩展SQLiteOpenHelper,因为我想对我的所有实体使用一个helper类,所以我需要更多的控制。@pskink的评论解决了这个问题,我写代码的时候只是在睡觉。无论如何,谢谢你的回答!:)哎呀,对不起!我的错:)
//constructor
public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
ctx = context;
DATABASE_PATH = ctx.getFilesDir().getPath();
}