c# - IIS 服务器上使用 C# 的 MS Access 数据库

标签 c# .net web-services ms-access iis

我正在使用带有 C# 的 MS Access 数据库并创建一个 Web 服务。为了与数据库连接,我使用以下代码

String databasePath = @"C:\inetpub\wwwroot\02 CustomerCreate\CustomerCreate\adResDemo.mdb";
String Connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databasePath + ";Persist Security Info=False";

//Connection to database
con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databasePath + ";Persist Security Info=False");
con.Open();

现在我正在使用代码在表中插入一些行。我正在使用以下代码

//Query For ZipCode Insertion
String zipQuery = "INSERT INTO ZipCodes(ZipCode, City, State, DeliveryCharge, DeliveryComp, AutoID, RowGUID) VALUES ('" + PostCode + "','" + City + "','" + State + "'," + DeliveryCharge + "," + DeliveryComp + "," + AutoID + ",'" + RowGUIDZipCode + "')";
//Inserts query ZipCodes Table
cmd = new OleDbCommand(zipQuery, con);
cmd.ExecuteNonQuery(); 

现在,当我直接在 Visual Studio 上运行上面的代码时,它工作正常并且数据库中发生条目。但是,当我在 IIS 服务器上部署此 Web 服务时,cmd.ExecuteNonQuery() 抛出运行时异常,并且不会在数据库中插入任何值。

异常

System.Data.OleDb.OleDbException: Operation must use an updateable query.
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
at CustomerCreate.Service1.createCustomer(String FirstName, String LastName, String EmailAddress, String CompanyName, String StreetAddress, String PostCode, String City, String State, String Country, String PhoneNumber) in C:\inetpub\wwwroot\02 CustomerCreate\CustomerCreate\Service1.asmx.cs:line 141

这是什么类型的问题?

最佳答案

我不确定,但您似乎需要对包含您尝试连接的 mdb 文件的文件夹具有修改权限。

设置此权限:

右键单击 App_Data 文件夹(或放置 mdb 文件的任何其他文件夹)并选择“属性”。查找“安全”选项卡。如果看不到它,则需要转到“我的电脑”,然后单击“工具”并选择“文件夹选项...”,然后单击“查看”选项卡。滚动到底部并取消选中“使用简单文件共享(推荐)”。返回“安全”选项卡,您需要将相关帐户添加到“组或用户名”框中。单击“添加...”,然后单击“高级”,然后单击“立即查找”。应列出适当的帐户。双击将其添加到“组或用户名”框中,然后选中权限中的“修改”选项。就是这样。你已经完成了。

取自 this link

关于c# - IIS 服务器上使用 C# 的 MS Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12727794/

相关文章:

c# - C# 中基本操作的成本是多少?

.net - bot框架中excel文件的路径是什么?

asp.net - 如何更改生产 .NET 网站中的 Web 引用?

c# - 如何将数据从静态 WebMethods 存储到 ViewState

c# - LINQ 查询 SQLite 时出错

c# - 如何让我的服务停止自动发布到 Windows 应用程序事件日志中

c# - Nlog 记录一个对象

c# - 取消 CheckedListBox 上的 ItemCheck 事件的可靠方法

c# - 为 RSS 加载 XDocument 时出现 MonoDroid ObjectDisposedException

web-services - Spring Integration 入站 webservice wsdl 生成