1

MS Access データベース (.accdb) に接続するアプリケーションを C# で作成しています。アプリケーションは複数のワーカーによって使用され、それぞれのワーカーは時々データベースに接続され、プレゼンスを更新します (サインイン時間を更新します)。

同じデータベースに接続する他のすべての機能は正常に機能しているように見えますが、これは機能しません。何らかの理由で以下のエラーが発生し、問題は私の行にあると言われてい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;
}
4

1 に答える 1

2

SQLは問題ないようです。権限の問題のようです。以下の記事に、この問題を修正する方法が概説されています。

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

于 2012-04-13T09:42:57.647 に答える