Announcement

Collapse
No announcement yet.

Mehrere neue Zeilen in Datenbank in Multiuserumgebung schreibe

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

  • Mehrere neue Zeilen in Datenbank in Multiuserumgebung schreibe

    Hallo,

    ich habe folgende grundsätzliche Frage. Ich schreibe an einem Programm und benütze MySQL als Datenbank. Ich habe mir eine Klasse geschrieben, die für jede Tabelle im DataSet alle Select-, Update-, Insert- und DeleteCommands schreibt. Grundsätzlich funktioniert das alles ganz ordentlich. Wenn ich aber mehrere Zeilen im Dataset erstelle, z.B. in einem DataGridView, und diese im Pulk in die Datenbank schreiben will, dann habe ich noch eine ungeklärte Frage. Ich muss ja für jede neue Zeile eine ID für die Datatable anfragen bzw. festlegen. wenn ich jetzt mehrere Zeilen neue erstelle, dann hab ich in meiner Datatable z.b. die neuen IDs 10, 11, 12 13. Wenn nun ein weitere Client ebenfalls eine neue Zeile in die Datenbank schreibt, dann besetzt er z.b. die 10. Wenn nun der erste wiederum seine neuen Zeilen einträgt, dann passiert, so weit ichs verstanden habe, dass die Zeile mit der ID 10 eingetragen wird, dann die ID aber von der DB als 11 zurückgegeben wird und dann gibt es einen Fehler im DAtaset, weil die 11 ja nur einmal vorkommen darf, diese aber in den noch zu übertragenden Zeilen schon vorhanden ist. Eine Möglichkeit scheint mir Dataset.EnforceConstraints auf False kurzfristig zu setzen. Was gibt es für alternative Möglichkeiten?

    Vielen Dank
    Daniel

  • #2
    Hallo Daniel,

    dieses Problem ließe sich mit "System.Guid" relativ einfach lösen! Dazu gibt es im Forum bereits Beiträge.

    Das Thema "Time-Stamp" sollte dich vielleicht auch noch interessieren.

    Gruß
    Christian

    Comment


    • #3
      Hallo Christian,

      vielen Dank für den Tipp. Ich hab mich jetzt nur mal kurz mit Guids beschäftigt, aber so ganz ist mir nicht klar, ob mir das weiterhilft. Alle meine Schlüssel haben als Format Integer und wenn ich beim Anlegen eines neuen Datensatzes einen Guid Wert zuweisen will, gibt das einen Fehler. Ich hab auch im forum auf die schnelle keinen Beitrag gefunden, der mir schnell weiterhilft. Wie kann man denn Guids für Integer Schlüselfelder verwenden?

      Vielen Dank schonmal
      Daniel

      Comment


      • #4
        Hallo Daniel,

        Wie kann man denn Guids für Integer Schlüselfelder verwenden?
        das geht nicht! Du mußt in der DB bereits den Datentyp GUID vereinbaren!

        Datentypen-Übersicht: msdn.microsoft.com/de-de/library/4e5xt97a(VS.80).aspx

        Gruß
        Christian

        Comment


        • #5
          Hallo Christian,

          vielen Dank trotzdem für den Hinweis. Ich habs jetzt so gelöst, dass ich in der DB vor dem Speichern nochmals den nächsten ID Wert abfrage, sofern mehrere Zeilen als added markiert sind, und korrigiere vor dem Speichern alle IDs nochmal nach oben, sofern notwendig. Ist zwar vielleicht umständlich, aber funktioniert zumindest.

          Nochmals vielen Dank
          Daniel

          Comment

          Working...
          X