2016-07-14 3 views
0

Ich möchte CRUD-Vorgänge in einer MDB-Datei über einen Web-Service. Der Dienst funktioniert einwandfrei und führt alle CRUD-Vorgänge auf meinem Computer durch (Entwicklungsumgebung). Aber wenn ich es tatsächlich auf dem Server hostet, löst es Error: Operation must use an updateable query. Fehler aus, wenn ich versuche, den Dienst mit Browser oder einem Client zu testen, der die Anwendung verbraucht.Fehler: Operation muss eine aktualisierbare Abfrage verwenden. Beim Zugriff auf .mdb-Datei von Web-Dienst

Die MDB-Datei hat volle Berechtigungen für alle Benutzer des Servers als here erwähnt und here die Verbindungszeichenfolge in Web-Service ist wie folgt.

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); 

Die MDB-Datei ist in keinem anderen Programm geöffnet/geschlossen. Was fehlt mir hier?

Basierend auf dem Stack Trace habe ich gefunden. Ich poste hier die Query Execution-Methoden, wenn es helfen könnte

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

IST dies die vollständige Fehlermeldung? Ich denke, Sie haben einen wichtigen Teil der Ausnahme weggelassen. – Steve

+0

Die 'exception.message' enthält nur diese. U bedeutet innere Ausnahme – Programmerzzz

+1

Ja, innere Ausnahmemeldung, Eine andere Möglichkeit ist: Hat die user_info Tabelle einen Primärschlüssel? – Steve

Antwort

0

Ich löste das Problem. Das Problem ist mit der logCommand.ExecuteNonQuery(); Methode. Es ist nicht in der Lage, den Befehlstyp herauszufinden, den ich auszuführen versuche. Ich habe dies dem Befehl vor dem Aufruf der ExecuteNonQuery() Methode hinzugefügt und es hat funktioniert.

logCommand.CommandType = CommandType.Text; 

Ich hoffe, es könnte helfen, jemandes Tag zu retten.

Danke,

Verwandte Themen