Android数据库究竟创建了哪些文件?

Android数据库究竟创建了哪些文件?,android,sqlite,Android,Sqlite,在我的一些应用程序中,我确实提供了Android数据库的应用程序内备份和恢复。数据库文件的名称在SQLiteOpenHelper中设置 现在我听说可能会有其他文件,具体取决于Android版本和/或制造商(例如HTC) 所有这些文件的名称是什么?视情况而定 标准安卓SQLite安装只为每个数据库创建一个数据库文件。此文件位于“/data/data//databases”中,并按照指示命名,例如在此构造函数中的“name”参数中: SQLiteOpenHelper(Context context,

在我的一些应用程序中,我确实提供了Android数据库的应用程序内备份和恢复。数据库文件的名称在SQLiteOpenHelper中设置

现在我听说可能会有其他文件,具体取决于Android版本和/或制造商(例如HTC)

所有这些文件的名称是什么?

视情况而定

标准安卓SQLite安装只为每个数据库创建一个数据库文件。此文件位于“/data/data//databases”中,并按照指示命名,例如在此构造函数中的“name”参数中:

SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
因此调用数据库文件,例如:

/data/data/<packagename>/databases/mydatabase.db
/data/data/<packagename>/databases/mydatabase.db-wal
/data/data//databases/mydatabase.db
SQLite本身有一个新特性,称为写前日志(WAL)。该WAL使用了与传统数据库制造商不同的日志记录机制。使用WAL时,新提交的数据将存储在附加文件中,该文件的原始文件名附加了“-WAL”。例如:

/data/data/<packagename>/databases/mydatabase.db
/data/data/<packagename>/databases/mydatabase.db-wal
/data/data//databases/mydatabase.db-wal
传统数据库文件中缺少此数据,直到达到可配置线程保持,或者应用程序开发人员指示数据库移动此数据

但是,启用WAL的数据库仅对“*.db”文件无效。形成数据库需要所有其他文件。这意味着启用WAL的数据库将无法在具有不支持WAL的SQLite版本的Android设备上工作。因此,从启用WAL的数据库进行数据库备份在较旧的Android系统上不起作用


然而,只有少数设备(例如HTC)和一些定制ROM支持WA。标准安卓系统无法启用WAL。

AFAIK,你听错了。SQLite是SQLite,创建的文件在硬件供应商和Android版本之间不应该有差异。在SQLite版本之间,它们可能会有所不同,但这不是任何人都可以提供的名称列表-很可能是文件内部格式的差异。客户报告最多有三个文件(db/wal/wcs)。在我的两台Android设备上,每个数据库只有一个文件总是(db)。安卓版本之间肯定有些不同……我没有文件差异,而且没有
wal
/
wcs
文件。是什么让你认为它们与SQLite有关?因为它们被命名为“-wal”等。。我的问题是可能存在哪些其他文件名。事实上,它们确实存在——客户确实从较新的Android设备发送了屏幕截图和目录列表。看来你没有收到我的要求——一定是我的英语不好