我是android新手,我想用SQLite创建一种CRUD.
我有一个public class DataBaseHelper
有构造函数:
public DataBaseHelper(Context context)
{
this.context = context;
}
Run Code Online (Sandbox Code Playgroud)
和datebase的getter:
public SQLiteDatabase getDataBase() {
if (dataBase == null) {
try {
dataBase = context.openOrCreateDatabase(DataBaseHelper.dbName,
Context.MODE_PRIVATE, null);
dataBase.execSQL("CREATE TABLE " + DataBaseHelper.accountTblName + " " +
"(ID integer PRIMARY KEY AUTOINCREMENT" +
",name TEXT" +
",address TEXT" +
",password TEXT)");
}
catch(Exception e) {
Log.e(context.toString(), e.getMessage());
if (dataBase != null) {
dataBase.close();
}
}
}
return dataBase;
}
Run Code Online (Sandbox Code Playgroud)
如果我是第一次启动程序 - 一切似乎都没问题.数据库为null,我创建它(使用表).但是当我重新启动我的app数据库时,它再次为null并且无法创建表.
我决定编写一个checkDB函数,它试图打开一个数据库.但是我在哪里可以找到它的路径?我不希望它被"硬编码".
或者我可能正在做某种反模式?
Eth*_*iou 61
你可以通过 context.getDatabasePath(DataBaseHelper.dbName)
这里我写了两种获取路径的方法。
(1)使用自定义方法
public String getDbPath(Context context,String YourDbName)
{
return context.getDatabasePath(YourDbName).getAbsolutePath();
}
Run Code Online (Sandbox Code Playgroud)
(2)使用File类
File path=context.getDatabasePath("YourDbName");
String db_path=path.getAbsolutePath();
Log.i("Path:",db_path);
Run Code Online (Sandbox Code Playgroud)
即使你会看到这两个代码...那么两个代码是相同的,第一个是获取数据库路径的快捷方法,并且与第二个选项相比,它占用更少的内存。