Android sqlite数据库硬代码/数据/数据库路径
无法检索数据库,并显示一条lint警告,提示: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
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路径