【问题标题】:Using custom file for Android sqlite database使用 Android sqlite 数据库的自定义文件
【发布时间】:2010-02-05 23:43:01
【问题描述】:

是否可以为 sqlite 数据库文件选择自定义位置?

如果可能,我想将数据库文件存储在存储卡中。如果用户从一张存储卡切换到另一张,我希望我的应用程序使用卡上可用的任何版本的数据库文件。

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    默认情况下,您的数据库存储在 data/data/your_package/databases

    您可以使用SQLiteDatabase openOrCreateDatabase 提供自定义数据库的路径作为您的第一个参数。

    【讨论】:

    • Android 数据存储文档 (developer.android.com/guide/topics/data/data-storage.html#db) 提到所有数据库都存储在预定义的文件夹中。但是 openOrCreateDatabase 的 API 文档对文件名没有任何限制。我认为文档确实令人困惑,但这可能是解决方案。
    • 是的,文档严重缺乏,尽管这可以满足您的需求,但我认为您最好使用SQLiteOpenHelper 创建数据库,然后将数据库文件复制到您的存储卡上。
    【解决方案2】:

    您可以使用以下方式访问存储在 sdcard 上的数据库:

    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
    
    public class MyClass {
        private SQLiteDatabase myDB = null;
    
        // Constructor
        public MyClass() {
            try {
                myDB = SQLiteDatabase.openDatabase(stPathToDB, null, SQLiteDatabase.NO_LOCALIZED_COLLATORS|SQLiteDatabase.OPEN_READONLY);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
        // Destructor
        public void finalize() {
            myDB.close();
        }
    }
    

    NO_LOCALIZED_COLLATORS = 打开数据库而不支持本地化整理器。

    为了获得你的 sdcard 的路径,你可以使用:

    stPathToDB = android.os.Environment.getExternalStorageDirectory().toString()+"/dbase.sqlite"
    

    Rgds 莱恩

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-03
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      相关资源
      最近更新 更多