【问题标题】:Azure SQLite InsertAzure SQLite 插入
【发布时间】:2013-01-25 20:06:06
【问题描述】:

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

在 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();

【问题讨论】:

    标签: c# sqlite azure


    【解决方案1】:

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

    当您说“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 网站,对资源的更改将被更新并被其他网站实例看到。

    【讨论】:

    • 我正在做类似的事情并使用天蓝色的网站,我可以毫无问题地读写 SQLite Db。汤姆在现场。
    • @Tom,对于 Azure 网站,我认为同样的“密封部署包”概念是否适用? Azure 网站可以扩展到多个实例,在这种情况下,不是只将写入保存到单个实例上吗?另外,我确实意识到这个答案已经有一年多了,也许 Azzure 网站的工作方式已经改变了?
    • @Josh,Azure 网站共享基于 Azure Blob 的文件系统,使用标准 SMB 2.1 协议。尽管 Azure 网站实例是独立的(例如,一个实例的崩溃不会影响其他实例),但它们共享相同的文件系统,因此所有其他实例都可以看到一个实例写入的更改。
    • 很高兴知道!您是否有描述此行为的参考资料?
    猜你喜欢
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2017-11-26
    • 1970-01-01
    相关资源
    最近更新 更多