问题: 我无法弄清楚用于将WPF桌面应用程序连接到Azure文件存储上的SQLite数据库的连接字符串。感谢MSDN Documentation我能够从应用程序访问CloudFile(因此我可以访问URI),但是当我将URI传递给连接字符串以创建连接然后尝试打开连接时,我收到一条错误消息,指出我的URI无效。当我尝试连接到硬盘驱动器上的SQLite数据库时,连接正常。我是否需要将密钥或其他内容传递给SQLite连接字符串以连接到Azure文件存储上的数据库?它甚至可能吗?
/// <summary>
/// Add all online (Azure file storage) data sources
/// </summary>
private void FindOnlineDataSources()
{
var accountName = "myAccountName";
var keyValue = "myKeyValue";
var useHttps = true;
var exportSecrets = true;
var storageCredentials = new StorageCredentials(accountName, keyValue);
var storageAccount = new CloudStorageAccount(storageCredentials, useHttps);
var connString = storageAccount.ToString(exportSecrets);
// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("myShare");
// Ensure that the share exists.
if (share.Exists())
{
// Get a reference to the root directory for the share.
CloudFileDirectory rootDir = share.GetRootDirectoryReference();
// Get a reference to the directory we created previously.
CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("myDirectory");
// Ensure that the directory exists.
if (sampleDir.Exists())
{
// Get a reference to the file we created previously.
var fileList = sampleDir.ListFilesAndDirectories();
foreach (var fileTemp in fileList)
{
if (fileTemp is CloudFile && TestConnection(SQLiteOnlineConnectionBuilder(fileTemp.StorageUri.PrimaryUri.AbsoluteUri)))
{
// Store reference to data source
}
}
}
}
}
/// <summary>
/// Test data source connection to determine if it is accessible
/// </summary>
private bool TestConnection(DbConnection connection)
{
bool retval = false;
try
{
connection.Open();
connection.Close();
retval = true;
}
catch { }
return retval;
}
/// <summary>
/// Create SQLite connection from URI string
/// </summary>
private DbConnection SQLiteOnlineConnectionBuilder(string uri)
{
return new SQLiteConnection
{
ConnectionString = new SQLiteConnectionStringBuilder
{
Uri = uri,
ForeignKeys = true,
BinaryGUID = false,
}.ConnectionString
};
}
背景: 我正在构建一个桌面应用程序,供我公司使用。应用程序的数据保存在SQLite数据库中。我们一次最多只能有5个用户访问数据,因此我认为没有必要尝试设置一个完整的服务器 - SQLite似乎是一个很好的选择。
但是,我正在尝试将SQLite数据库放入我们的Azure文件存储帐户,以便多个用户可以通过桌面应用程序访问它,只要他们可以访问Internet。我们没有中央公司网络,因此我认为Azure文件存储将是最佳选择。
答案 0 :(得分:0)
嘿,Azure文件共享的一种不太安全但可能满足您需求的选项是将azure文件共享映射到桌面应用程序所在的位置。然后,您只需指向映射驱动器内的sqlite * db文件即可。
https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-use-files-windows-如何进行映射。