我有一个奇怪的问题在那里,当我卸载的应用的Android删除SQL数据库
我没有创造任何外部存储目录数据库我的SQL数据库不会删除自身,并且数据库确认在其默认位置:/data/data/com.example.app/databases/
我卸载应用程序后,我希望所有的数据在该位置被擦除,但是当我从android studio再次运行应用程序时,新安装仍可以看到所有旧数据
我曾尝试使用adb手动删除.db
文件从数据库目录,但是当我再次运行该应用程序的旧数据仍然可以看到
我也曾尝试进入应用程序设置和清除数据和缓存,但似乎并没有帮助
的只有在我的代码的地方,我在做什么“怪”,与数据库,我复制数据库文件到新的位置上按一下按钮:
String pathToExternalStorage = Environment.getExternalStorageDirectory().toString();
File exportDir = new File(pathToExternalStorage, "/SensorData");
File subjectDataDir = new File(exportDir, "/subjects");
File data = Environment.getDataDirectory();
String currentDBPath = "//data//com.example.app//databases//" + DBHelper.DATABASE_NAME;
File currentDB = new File(data, currentDBPath);
File destDB = new File(exportDir, DBHelper.DATABASE_NAME);
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(destDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
,然后在新创建的运行mediascanner文件,所以我可以得到即时MTP访问它
我怀疑这些过程是否会导致这种情况发生?
我的直接问题是如何在没有root权限的情况下手动从手机中删除数据库?
更大的问题是什么可能导致卸载过程不删除数据库文件?而且,新安装的应用程序版本(卸载后)如何仍能看到旧的数据库信息?
我不知道如何开始搞清楚了这一点......
编辑:
这个越来越陌生。这似乎只发生在Windows上。这是我试过的过程:
- 删除/从Windows上的Android工作室电话
- 运行的应用程序卸载的应用。问题:数据库仍然存在,应用程序看到所有旧数据(即使我卸载了应用程序)
- 卸载应用程序
- 从我的macbook上的android studio运行应用程序。没问题!该数据库是新鲜的,没有找到现有数据
- 再次卸载应用程序
- 在我的Windows机器上再次测试。现在,数据库回来了,应用程序可以看到旧的旧数据库信息(来自步骤2!)。卸载在这一点上并没有摆脱它
所以我真的很亏了。为什么在Mac上运行会好?为什么在Mac上运行并清理数据库之后,再次使用旧的Windows数据库?这不应该都是独立于操作系统吗?
DROP TABLE table_name IF EXISTS;
然后
CREATE TABLE table_name IF NOT EXISTS
此外,如果你想手动删除模拟器或.db文件:
在您的应用程序中,您可以检查表是否存在,您可以删除该表并创建一个新表 –
哇。这确实很奇怪!你有没有在你的数据库中设置一些特殊的东西,因为默认情况下,当卸载应用程序时,数据库也会被删除。 –
我的db中没有什么特别的。只有2个表,一个表有一个外键,这是特殊的,因为它得到 – Simon