Xamarin Android Sqlite数据库浏览器
我有了一周以来的第一部智能手机,并尝试用Xamarin制作一个应用程序 我使用带有EntityFrameworkCore的SQLite来存储数据 这是很好的工作,但为了调试更容易,我想使用SQLite浏览器。 数据库文件路径为'data/data/{AppName}/database.db' 我通过USB从物理设备进行调试,但是当我使用Windows资源管理器浏览设备时,我找不到SQLite DB文件。“数据/数据”文件夹不可用。然后我不能使用SQLite浏览器查看数据 在本文中,作者使用Android仿真器,可以看到“data/data”文件夹: 但我更喜欢使用真正的设备 你有解决办法吗 MikeT开发中的解决方案将db文件存储在可用文件夹中,如下所示:Xamarin Android Sqlite数据库浏览器,android,sqlite,xamarin,xamarin.android,Android,Sqlite,Xamarin,Xamarin.android,我有了一周以来的第一部智能手机,并尝试用Xamarin制作一个应用程序 我使用带有EntityFrameworkCore的SQLite来存储数据 这是很好的工作,但为了调试更容易,我想使用SQLite浏览器。 数据库文件路径为'data/data/{AppName}/database.db' 我通过USB从物理设备进行调试,但是当我使用Windows资源管理器浏览设备时,我找不到SQLite DB文件。“数据/数据”文件夹不可用。然后我不能使用SQLite浏览器查看数据 在本文中,作者使用And
public static string DatabasePath
{
get
{
var dbFolder = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath;
var fileName = "database.db";
var dbFullPath = Path.Combine(dbFolder, fileName);
return dbFullPath;
}
}
在生产中,将db文件复制到一个可用的文件夹。一个真正的设备,我相信,您需要根设备来直接访问数据 但是,您可以将数据库文件复制到其他位置,例如外部存储。以下是我使用的核心流程:-
try {
FileInputStream fis = new FileInputStream(dbfile);
OutputStream backup = new FileOutputStream(backupfilename);
//byte[] buffer = new byte[32768];
int length;
while((length = fis.read(buffer)) > 0) {
backup.write(buffer, 0, length);
}
backup.flush();
backup.close();
fis.close();
catch (IOException e) {
e.printStackTrace();
confirmaction = false;
}
我使用以下命令获取备份文件名的路径名:-
File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),subdirectory);
this.directory = dir.getPath();
然后添加实际的文件名(即用户输入)
注意!我进行检查以确定是否安装了外部存储器等。
要获取我使用的数据库路径,请执行以下操作:-
String dbfilename = this.getDatabasePath(
DBConstants.DATABASE_NAME).getPath();
dbfile = new File(dbfilename);
这当然是Java,但我认为它可以被转换/调整以适应。答案的关键是将数据库文件放到一个可以访问它的位置。从活动中调用ExtractDb方法
public void ExtractDB()
{
var szSqliteFilename = "databasename.db3";
var szSourcePath = new FileManager().GetLocalFilePath(szSqliteFilename);
var szDatabaseBackupPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/databasename_Backup.db3";
if (File.Exists(szSourcePath))
{
File.Copy(szSourcePath, szDatabaseBackupPath, true);
Toast.MakeText(this, "Copied", ToastLength.Short).Show();
}
}
获取android设备存储的路径,如下所示
public class FileManager
{
public string GetLocalFilePath(string filename)
{
string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
return Path.Combine(path, filename);
}
}
您需要在清单文件中添加android.permission.WRITE_EXTERNAL_存储权限。是否可以在下载文件夹中存储和使用db文件?工作正常,谢谢。有关更多详细信息,请参见我编辑的问题。