Ausnahme beim ausführen "ERSETZEN" gegen MS Access

Ich versuche zum ausführen einer SQL-Abfrage für eine MS Access-Datenbank mit einer "ERSETZEN" - Funktion:

UPDATE MyTable 
   SET MyColumn = REPLACE(MyColumn, 'MyOldSubstring', 'MyNewSubstring') 
 WHERE Id = 10;

Wenn ich diese Abfrage ausführen, die von innen MS Access (Anwendung) funktioniert es einwandfrei. Aber wenn ich versuche, führen Sie es aus meiner Anwendung eine exception geworfen wird.

Ausnahme:

System.Data.OleDb.OleDbException was unhandled
  Message="Undefined function 'REPLACE' in expression."
  Source="Microsoft Office Access Database Engine"
  ErrorCode=-2147217900
  StackTrace:
       at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
       at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
       at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
       at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
       at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
       at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
       ...

Warum erhalte ich diese exception?

Mehr info:

  • Meine Anwendung eine WPF-Anwendung
  • Ich mit .NET 3.5
  • Ich ausführen von MS-Access-2007 -
  • Mein connectionstring "Provider=Microsoft.Ass.OLEDB.12.0;Data Source=C:\MyFolder\MyDatabase.accdb"

Meine Datenbank access code sieht so ähnlich aus wie diese, wo ich einfach in den bereits erwähnten SQL als string:

public void ExecuteNonQuery(string sql)
{
    OleDbCommand command = new OleDbCommand(sql);
    OleDbConnection connection = new OleDbConnection(ConnectionString);
    command.Connection = connection;

    try
    {
        connection.Open();
        command.ExecuteNonQuery();
    }
    catch
    {
        throw;
    }
    finally
    {
        connection.Close();
    }
}

(Einige Codes, wie z.B. die Fehlerbehandlung aus Gründen der Kürze entfernt. Beachten Sie, dass ich bin nur der Aufbau einer schnellen Prototyp, so dass diese Sanitär-code wird nie verwendet werden, für die realen, also bitte Geduld mit ihm. 😉 Ich muss noch diese Arbeit, obwohl...)

Alternative Lösung?

Wenn es unmöglich ist, um die zu ERSETZEN, um zu arbeiten, vielleicht kennen Sie einige alternative Lösung? Ich konnte Holen alle die Zeilen, die ich aktualisieren möchten , tun Sie dies, string ersetzen im code, und aktualisieren Sie anschließend die Zeilen in der Datenbank. Aber das könnte eine Menge von SQL-Abfragen (eine zu Holen und man für jede zu aktualisierende Zeile) und es wäre keine sehr elegante Lösung...

InformationsquelleAutor haagel | 2011-01-29
Schreibe einen Kommentar