UWP中如何将Microsoft.Data.SQLite连接字符串指向共享应用数据文件夹?
实现UWP应用共享SQLite数据库的方案
要让两个UWP应用共享同一个SQLite数据库,核心是把数据库放到共享应用数据文件夹里,不过有个前提:两个应用必须属于同一个发布者(比如用同一个数字证书签名,开发环境下Visual Studio默认会用同一个开发者证书,只要你是在同一个开发环境下构建两个应用就行),否则无法访问这个共享文件夹。
下面是具体的实现步骤:
1. 获取共享本地文件夹的路径
UWP提供了ApplicationData.Current.SharedLocalFolder来指向共享应用数据文件夹,这个路径是所有同发布者的应用都能访问的。不过第一次访问时这个文件夹可能不存在,所以需要先判断并创建:
Windows.Storage.StorageFolder sharedFolder = ApplicationData.Current.SharedLocalFolder; if (sharedFolder == null) { // 如果文件夹不存在,异步创建它 sharedFolder = await ApplicationData.Current.CreateSharedLocalFolderAsync(); }
2. 构建完整的数据库连接路径
把数据库文件名和共享文件夹路径拼接起来,得到数据库的绝对路径:
string dbFullPath = System.IO.Path.Combine(sharedFolder.Path, "data.db");
3. 配置SQLite连接字符串
把这个绝对路径放到SQLite的连接字符串中,替换原来的相对路径写法:
using Microsoft.Data.Sqlite; // 创建连接 SqliteConnection dbConnection = new SqliteConnection($"Filename={dbFullPath}"); // 打开连接(后续操作记得用using或者手动释放资源) dbConnection.Open();
关键注意事项
- 发布者一致性:两个应用必须使用同一个证书签名,否则无法访问
SharedLocalFolder。开发阶段只要用同一个Visual Studio环境构建,默认会用同一个开发者证书,所以没问题;发布时要确保两个应用用相同的证书打包。 - 文件夹权限:
SharedLocalFolder的权限是同发布者应用共享,其他应用无法访问,所以不用担心数据泄露。 - 异步创建文件夹:因为
CreateSharedLocalFolderAsync是异步方法,所以要确保在异步上下文中调用(比如在async方法里)。
内容的提问来源于stack exchange,提问作者user8977483
相关产品推荐
相关产品推荐

