2012-04-13 105 views
1

我正在編寫一個連接到MS Access數據庫(.accdb)的C#應用​​程序。應用程序將被幾個工作人員使用,並且他們每個人都會不時連接到數據庫 - 刷新他們的存在(刷新登錄時間)。C#/ accdb:出錯「操作必須使用可更新的查詢。」

連接到同一個數據庫的所有其他函數似乎工作正常,但這不是。由於某種原因,我得到了下面的錯誤,並且說問題出在我的ExecuteNonQuery()所在的行上。命令文本由字符串myUpdateNonquery定義。

System.Data.OleDb.OleDbException (0x80004005): Operation must use an updateable query. 

功能:

public Boolean RefreshSignIn() 
{ 
    Boolean successful = false; 
    lock(dbLock) 
    { 
    try 
    { 
     string myConnectionString = connectionType + primarydbPath; 
     OleDbConnection myConnection = new OleDbConnection(myConnectionString); 
     string myUpdateNonquery = "UPDATE AgentSignIn SET signInTime = NOW() WHERE agentName = @p1"; 
     using(myConnection) 
     { 
     OleDbCommand myCommand = new OleDbCommand(myUpdateNonquery, myConnection); 
     using(myCommand) 
     { 
      myCommand.Parameters.Add("@p1", OleDbType.Char).Value = appSettings.mynick; 

      myConnection.Open(); 
      int updatedRows = myCommand.ExecuteNonQuery(); 
      if (updatedRows>0) {successful = true;} 
     } 
     } 
    } 
    catch(System.Exception ex) 
    { 
     MessageBox.Show("Error! Failed to keep you signed in to the database!\n\n"+ex.ToString()); 
    } 
    } 
    return successful; 
} 
+0

的可能重複[錯誤:操作必須使用可更新查詢(http://stackoverflow.com/questions/ 2749674/error-operation-must-use-an-updateable-query) – Fionnuala 2012-06-28 09:55:02

回答

2

的SQL看起來很好。這似乎是一個權限問題,下面的文章概述瞭如何來解決這個問題:

http://www.mikesdotnetting.com/Article/74/Solving-the-Operation-Must-Use-An-Updateable-Query-error

+0

但使用UPDATE命令的其他方法可以工作,不會給我錯誤。這是什麼讓我感到困惑:/ – Val 2012-04-13 10:06:12

+0

好吧。在接入,板條箱在AgentSignIn表中的測試行,則創建一個新的查詢並執行以下: UPDATE AgentSignIn SET signInTime = NOW()WHERE AGENTNAME =「TestRow」 如果執行它可以是線:OleDbType .Char).Value = appSettings.mynick; 數據類型char只接受1個字符(不是字符串),您可能必須將其更改爲: OleDbType.VarChar).Value = appSettings.mynick; – 2012-04-13 10:11:22

+0

我在鏈接下的文章中進行了權限更改。它似乎已經正確保存了用戶名並刷新了登錄時間。但現在我用另一種方法得到了另一個錯誤(註釋了其他非活動用戶)。錯誤是:'System.Data.OleDb.OleDbException(0x80004005):無法使用'xxxxxxxx.accdb';文件已在使用中.' – Val 2012-04-13 10:29:19

相關問題