2012-04-13 8 views
1

私はC#でMS Accessデータベース(.accdb)に接続するアプリケーションを作成しています。アプリケーションは複数のワーカーによって使用され、それぞれがdbに時々接続され、その存在をリフレッシュします(サインイン時間を更新します)。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-use-an-updateable-query) – Fionnuala

答えて

2

SQLは正常に見えます。以下の資料では、この問題を解決する方法を概説し、アクセス許可の問題のようだ:

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

+0

しかし、UPDATEコマンドを使った他のメソッドは正常に動作しますが、エラーは表示されません。これは私を混乱させるものです:/ – Val

+0

いいえ。アクセスでは、AgentSignInテーブルのテスト行を作成し、新しいクエリを作成して次のコマンドを実行します。 UPDATE AgentSignIn SET signInTime = NOW()WHERE agentName = 'TestRow' これが実行されると、行:OleDbType .Char)。値= appSettings.mynick; データ型charは、文字列ではなく1文字のみを受け入れます。 OleDbType.VarChar).Value = appSettings.mynick; –

+0

あなたのリンクの下にある記事から権限の変更を行いました。すでにユーザー名が正しく保存されており、サインイン時間が更新されているようです。しかし、別の方法で別のエラーが表示されるようになりました(他の非アクティブなユーザーにサインアウト)。エラーは 'System.Data.OleDb.OleDbException(0x80004005): 'xxxxxxxx.accdb'を使用できませんでした。すでに使用中のファイルです。 – Val

関連する問題