Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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数据库硬代码/数据/数据库路径_Android_Database_Sqliteopenhelper - Fatal编程技术网

Android sqlite数据库硬代码/数据/数据库路径

Android sqlite数据库硬代码/数据/数据库路径,android,database,sqliteopenhelper,Android,Database,Sqliteopenhelper,无法检索数据库,并显示一条lint警告,提示: Do not hardcode "/data/"; use Context.getFilesDir().getPath() instead 已尝试搜索相关错误,但没有任何帮助。 这是密码 private static String DB_PATH = "/data/data/mlearning.fundprog/databases/"; private static String DB_NAME = "questionsDb"; private

无法检索数据库,并显示一条lint警告,提示:

Do not hardcode "/data/"; use Context.getFilesDir().getPath() instead
已尝试搜索相关错误,但没有任何帮助。 这是密码

private static String DB_PATH = "/data/data/mlearning.fundprog/databases/";
private static String DB_NAME = "questionsDb";
private SQLiteDatabase myDataBase; 
private final Context myContext;

public DBHelper(Context context) {
    super(context, DB_NAME, null, 1);
    this.myContext = context;
    DB_PATH = context.getFilesDir().getPath() + context.getPackageName() + DB_NAME;
}   

private boolean checkDataBase(){
    SQLiteDatabase checkDB = null;
    try{
        String myPath = DB_PATH + DB_NAME;
        checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    }catch(SQLiteException e){

    }
    if(checkDB != null){
        checkDB.close();
    }

    return checkDB != null ? true : false;
}

private void copyDataBase() throws IOException{
    InputStream myInput = myContext.getAssets().open(DB_NAME);
    String outFileName = DB_PATH + DB_NAME;
    OutputStream myOutput = new FileOutputStream(outFileName);

    byte[] buffer = new byte[1024];
    int length;
    while ((length = myInput.read(buffer))>0){
        myOutput.write(buffer, 0, length);
    }

    myOutput.flush();
    myOutput.close();
    myInput.close();
}

public void openDataBase() throws SQLException{
    String myPath = DB_PATH + DB_NAME;
    myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}

我真的不明白这是怎么回事。它以前是可以工作的,但我想这是因为我已经从API8迁移到了API14。我想这个更高的API对编码有另一个规则。是这样吗?

要获取数据库的路径,。

要获取数据库的路径,。

您可以使用以下两种方法之一获取数据库的路径:

  • DB_PATH=“/data/data/”+context.getApplicationContext().getPackageName()+“/databases”

还是用这个

  • DB_PATH=context.getDatabasePath(DB_NAME.getParent()

您可以使用以下两种方法中的任意一种来获取数据库的路径:

  • DB_PATH=“/data/data/”+context.getApplicationContext().getPackageName()+“/databases”

还是用这个

  • DB_PATH=context.getDatabasePath(DB_NAME.getParent()

你真的在任何地方使用
DB\u PATH
吗?是的,我在任何地方都使用
DB\u PATH
everywhere@CL。而不是在你显示的代码中。(SQLiteOpenHelper
构造函数只看到
DB\u NAME
)我在@clpost中添加了更多的代码,这些代码是从哪里来的?更好地使用。你是否真的在任何地方使用了
DB\u路径
?是的,我在任何地方都使用
DB\u路径
everywhere@CL。而不是在你显示的代码中。(SQLiteOpenHelper
构造函数只看到
DB\u NAME
)我在@clpost中添加了更多的代码,这些代码是从哪里来的?更好的使用。
v.getDatabasePath
中的
v
代表什么?应该放在DBHelper构造函数中,对吗?我试过了,但还是不管用是的。尝试调试你的应用程序并查看waht包含DB路径
v.getDatabasePath
中的
v
代表什么?应该放在DBHelper构造函数中,对吗?我试过了,但还是不管用是的。尝试调试你的应用程序并查看waht包含的DB路径