Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite openOrCreateDatabase未知错误(代码14):无法打开数据库_Android_Database_Sqlite - Fatal编程技术网

Android SQLite openOrCreateDatabase未知错误(代码14):无法打开数据库

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&

我正在尝试学习android的sqlite。 我创建了一个Helper类,它应该打开我的数据库并执行Helper类所做的任何操作

我的问题是,由于此错误,我甚至无法打开数据库:

android.database.sqlite.SQLiteCantoPendDatabaseException:未知错误(代码14):无法打开数据库

这是我的DatabaseHelper类的相关代码,错误在openOrCreateDatabase行中:

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();
}