Announcement

Collapse
No announcement yet.

Probleme mit dem UPDATE Befehl

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit dem UPDATE Befehl

    Moin

    Ich habe diesen Aufbau

    Code:
     da = New Odbc.OdbcDataAdapter("SELECT Kontakt.* FROM Kontakt WHERE ((Kontakt.ID) = 1) ;", conn)
     dt = New DataTable("Kontakt")
     da.Fill(dt)
    
     Dim cmd As New Odbc.OdbcCommand("UPDATE Kontakt SET Flag = ?", conn)
     cmd.Parameters.Add("@p1", OdbcType.Bit, 4, "Flag")
    
     dr = dt.Rows(0)
     dr("Flag") = True
    
     da.Update(dt)
    Das Problem besteht nun daraus das ich im da per WHERE ein Datensatz herausfiltere, dies wird immer nur ein Datensatz sein.

    In dem dr ändere ich das Flag.

    Jetzt wird leider nicht nur der Datensatz editiert welcher gerade im dt drin ist sondern alle Datensätze in der Tabelle.

    Wo liegt der Überlegungs-Fehler bei mir?

    Danke schon im voraus
    Blackbonsai

  • #2
    Hallo,

    der Update-Befehl des DataAdapters führt bei jeder DataRow, die geändert wurde, den angegebenen SQL-Befehl aus. Das betrifft wegen der vorhergehenden Änderung genau einen Datensatz; dieser Flag-Wert wird in den Parameter übernommen. Aber der UPDATE-Befehl im DbCommand enthält keine WHERE-Bedingung; deshalb führt die Datenbank (nicht der DataAdapter!) diesen Befehl bei allen Datensätzen aus.

    Lösung: WHERE-Bedingung mit einem weiteren Parameter hinzufügen.

    Zusatzhinweise: Fragen zur DB-Anbindung gehören ins Unterforum ADO.NET (unabhängig von der Programmiersprache). Willst Du wirklich mit Odbc arbeiten? Das ist - genauso wie Oledb - nur eine Notlösung, wenn es wirklich nichts anderes gibt. In allen "normalen" Fällen sind spezielle DbProvider wie SqlProvider, FbProvider usw. vorzuziehen.

    Gruß Jürgen

    Comment


    • #3
      Dank und Sry

      Hallo Jürgen

      Danke vielmals das hat mir sehr geholfen.
      Sry für das falsche Forum.
      Ich habe diesen Tipp schoneinmal erhalten ich möchte jedoch mal das es grundsätzlich funktioniert wie ich es angefangen habe also mit ODBC. Danach kann ich es immer noch umschreiben.

      Comment


      • #4
        Originally posted by Blackbonsai View Post
        Ich habe diesen Tipp schoneinmal erhalten ich möchte jedoch mal das es grundsätzlich funktioniert wie ich es angefangen habe also mit ODBC. Danach kann ich es immer noch umschreiben.
        Das halte ich für ein falsches Verfahren. Auf einem falschen Weg sollte man so schnell wie möglich umkehren. (Beispielsweise sehen Parameter anders aus, und du musst später noch viel mehr anpassen.)

        Außerdem bin ich immer am Zweifeln, ob ich weiterhelfen will, wenn Ratschläge ignoriert werden.

        Jürgen

        Comment

        Working...
        X