0

我对android开发很陌生,现在我正试图通过一个扩展SQLiteOpenHelper的类来创建一个数据库。我确信数据存储在我的 Nexus 7(我用来测试我的应用程序的设备)的某个地方,但是我找不到数据库的路径。

我四处寻找其他类似的问题,所有答案都指向在data/data/com.example.projet_name/databases/database_name找到数据库,但我的设备上没有这样的路径。

关于问题可能是什么的任何想法?或者也许还有其他我应该寻找的路径?

谢谢你的时间。

编辑:

请在我之前的帖子中找到我的代码。

现在,当我运行应用程序时出现以下错误。我希望它在某种程度上有所帮助。

07-17 08:28:20.130: E/libgps(486): LIBGPS: Cannot communicate (write) with a GPSD
07-17 08:28:20.130: E/libgps(486): IPC Communication Error, /tmp/11862727/customers/Asustek/Tabletandroid/../../../proprietary/deliverables/android/gps_interface/../gps_interface/gpsi_client/GpsiClient.cpp:1178 agps_ril_update_network_state
4

2 回答 2

0

如何将 dbname 设置为完整路径:

String DATABASE_NAME = "/data/data/"+packageName+"db.db";

或将您的数据库放入 SD 卡中:

String DATABASE_NAME= Environment.getExternalStorageDirectory()+packageName+"db.db";

在代码中传递 dbPath:

public DatabaseImplementation(Context context) 
{
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
于 2013-07-17T06:53:53.067 回答
0

如果您尝试从设备获取存储在应用程序包中的数据库,那么您将无法从设备 /data/data/app packagename/databases/ 直接访问 ..您可以使用 helperclass bt direct export nt poss AFAIK 访问和修改。 .. 来自模拟器 u cn gt 的 bt

在此处输入图像描述

如果您从应用程序包的 sd 卡中导出数据库

尝试这个

private void copyFromDataPackgeToSdCard() throws IOException {
    try {
        File sdCard = Environment.getExternalStorageDirectory();
        File appDataDir = Environment.getDataDirectory();
        if (sdCard.canWrite()) {
            String currentDBPath = "//data//" + getPackageName()
                    + "//databases//"
                    + DatabaseImplementation.DATABASE_NAME;
            String backupDBPath = DatabaseImplementation.DATABASE_NAME;
            File currentDatabase = new File(appDataDir, currentDBPath);
            File backupDatabase = new File(sdCard, backupDBPath);

            if (currentDatabase.exists()) {
                FileChannel src = new FileInputStream(currentDatabase)
                        .getChannel();
                FileChannel dst = new FileOutputStream(backupDatabase)
                        .getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
            }
        }
    } catch (Exception e) {
        Log.e("copyFromDataPackgeToSdCard", e.getMessage());
    }
}
于 2013-07-17T06:57:37.693 回答