2016-07-14 33 views
0

我想通過Web服務在.mdb文件上執行CRUD操作。該服務工作正常,並執行我的機器上的所有CRUD操作(開發環境)。 但是,當我真正將其託管在服務器上時,當我嘗試使用瀏覽器或使用該應用程序的任何客戶端來測試服務時,它會引發Error: Operation must use an updateable query.錯誤。錯誤:操作必須使用可更新的查詢。同時從Web服務訪問.mdb文件

.mdb文件有提到herehere 在Web服務的連接字符串如下服務器的所有用戶完全權限。

string strConnection = @"Provider=Microsoft.ACE.OLEDB.12.0 ;Data Source="; 
      strConnection += Server.MapPath(".\\App_Data\\users.mdb");// + "; user id=;password=;"; 
      string strSQL = "SELECT * FROM user_info"; 

      OleDbDataAdapter userAdapter = new OleDbDataAdapter(strSQL, strConnection); 
      OleDbCommandBuilder userCB = new OleDbCommandBuilder(userAdapter); 

該.mdb文件未在任何其他程序中打開/關閉。我在這裏錯過了什麼。

基於我找到的堆棧跟蹤。我在這裏發佈查詢執行方法,如果它可能有幫助

OleDbConnection connection = new OleDbConnection(strConnection); 
      OleDbCommand logCommand = new OleDbCommand(strLogSQL_User, connection); 
      logCommand.Connection.Open(); 
      logCommand.ExecuteNonQuery(); 

      logCommand = new OleDbCommand(strLog_User, connection); 
      logCommand.ExecuteNonQuery(); 
      logCommand.Connection.Close(); 
      return "true"; 
+0

這是完整的錯誤信息?我想你已經省略了例外的重要部分。 – Steve

+0

'exception.message'只包含這個。 U意思是內部異常 – Programmerzzz

+1

是的,內部異常消息,另一種可能性是:是否有user_info表的主鍵? – Steve

回答

0

我解決了這個問題。 問題出在logCommand.ExecuteNonQuery();方法。它無法弄清楚我嘗試執行的命令類型。 我在調用ExecuteNonQuery()方法之前將其添加到命令中,並且它工作正常。

logCommand.CommandType = CommandType.Text; 

希望它可以幫助節省某人的一天。

謝謝,

相關問題