获取数据库path

我新来的Android和我想用SQLite创build一种CRUD。

我有一个public class DataBaseHelper有一个构造函数:

 public DataBaseHelper(Context context) { this.context = context; } 

和一个数据库的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; } 

如果我第一次启动一个程序 – 一切似乎都没问题。 数据库是空的,我创build它(与表)。 但是,当我重新启动我的应用程序数据库是空再次和表不能创build。

我已经决定写一个checkDB函数,它试图打开一个数据库。 但是我可以在哪里find一个path? 我不希望它被“硬编码”。

或者可能是我正在做某种反模式?

你可以通过context.getDatabasePath(DataBaseHelper.dbName)

你可以在你的帮手的构造函数中使用getDatabasePath方法:

 public class MyDatabase extends SQLiteAssetHelper { private static final String DATABASE_NAME = "wl.db"; private static final int DATABASE_VERSION = 1; public String databasePath = ""; public MyDatabase(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); databasePath = context.getDatabasePath("wl.db").getPath(); } 

我也需要访问数据库的应用程序。 这对我工作:

 String dbFile; String[] dbNames = getSherlockActivity().databaseList(); // or ContextWrapper for (int i = 0; i < dbNames.length; i++) { dbFile = getSherlockActivity().getDatabasePath(dbNames[i]).toString(); Log.i(LOG_TAG, dbFile); } 

希望能帮助到你! 🙂

获取Sqlite数据库的path

在这里,我正在写两种方式来获得path。

(1)使用自定义的方法

 public String getDbPath(Context context,String YourDbName) { return context.getDatabasePath(YourDbName).getAbsolutePath(); } 

(2)使用File类

  File path=context.getDatabasePath("YourDbName"); String db_path=path.getAbsolutePath(); Log.i("Path:",db_path); 

即使你会看到两个代码…然后两个代码是相同的,第一个是获取数据库path的快捷方法,它占用较less的内存比第二个选项。