gpt4 book ai didi

c# - Azure SQLite 插入

转载 作者:行者123 更新时间:2023-12-03 18:19:43 26 4
gpt4 key购买 nike

我有一个 Azure 云应用程序,我正在尝试将用户上传的数据存储在位于 ~/AppData/mydb.db 的 SQLite 数据库中。由于我在部署 System.Data.SQLite 时遇到许多问题,我修改了代码以使用此 sharp-sqlite图书馆。在 Debug模式下插入数据时一切正常。

在 Azure 上部署时,用户提供的数据将插入到 SQLite 数据库中。在此过程中不会引发任何错误。但是,当尝试查看数据(现在应该存在于数据库中)时,什么也没有。我还在我的网络应用程序上添加了一个链接,以便我可以下载数据库。下载它验证数据没有被保存。

Azure 似乎正在阻止数据库更新。有没有人遇到过类似的问题。

这是我正在使用的代码示例:

Community.CsharpSqlite.SQLiteClient.SqliteConnection cnn = new SqliteConnection("data source=file:" + Server.MapPath(@"~\App_Data\mydb.db"));
cnn.Open();

cmd.CommandText = "INSERT INTO Data(x,y,z) VALUES(?,?,?)";

System.Data.Common.DbParameter X = cmd.CreateParameter();
System.Data.Common.DbParameter Y = cmd.CreateParameter();
System.Data.Common.DbParameter Z = cmd.CreateParameter();

cmd.Parameters.Add(X);
cmd.Parameters.Add(Y);
cmd.Parameters.Add(Z);

X.Value = "some"
Y.Value = "sample"
Z.Value = "data"

cmd.ExecuteNonQuery();
dbTrans.Commit();

最佳答案

您遇到的问题可能与您的方法有关。

当您说“Azure 云”时,我假设您指的是 Azure Cloud Services (不是 Azure 网站)。

就 Azure 云服务而言,您的部署服务包(服务包包含应用程序代码和服务定义文件)应被视为密封包 em> 您的代码无法修改它。但是,您尝试执行的是更新内部包资源 mydb.db 文件(通过执行一些 SQL 插入,这将导致 mydb.db 文件更新)。

拥有服务包*不可变*的方法是设计使然。有一些观点支持该决定:

  • 许多角色(同一类型)可以处理该请求(假设您有多个特定 Web 角色的实例);这就是为什么您的服务包需要在所有实例中都相同。
  • Azure 执行了操作系统的日常维护或修补,并从服务包重新创建了您的实例
  • Azure 尝试从服务或硬件故障中恢复 - 再次,您的实例已从服务包重建

我认为 Azure 云服务的最佳解决方案是使用云优化的解决方案,例如 Azure SQL 数据库。

如果你确实需要使用 SQLite,我建议使用 Azure Website而不是Azure Cloud Services 。使用 Azure 网站,对资源的更改将被更新并由其他网站实例可见。

关于c# - Azure SQLite 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14509155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com