Announcement

Collapse
No announcement yet.

Dataset in Blob speichern

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

  • Dataset in Blob speichern

    Hallo,

    ich möchte ein komplettes Dataset in einer entsprechenden Spalte (XML oder varbin(max) speichern.
    Das Problem ist, dass immer die XML-Daten analysiert werden.
    Selbst wenn die Dataset über ds.getxml() als string gespeichert werden, greift das System ein.

    Hat jemand dazu eine Idee?

    Danke

    Axel

  • #2
    Wäre vielleicht erfolgversprechender, wenn du die verwendete Datenbank und Tool/Sprache angibst. Und falls möglich auch das SQL-Statement bzw. Teil des Scripts, mit dem du es derzeit erfolglos probierst.<br>
    bye, Helmu

    Comment


    • #3
      Hallo Helmut,

      danke für Deinen Hinweis:

      SQL-Server 2005
      Visual Studio 2005, C# oder VB

      Beispiel

      public void insert_history(int mandant, int id,string aktion, DataSet main_data,DataSet type_data,DataSet event_data)
      {
      string m, t, e;
      m = main_data.GetXml();
      t = type_data.GetXml();
      e = event_data.GetXml();
      openDB();
      sqlString = "INSERT INTO maindata_history (id_mandant, id_item, nutzer,aktion,datum,_main_data,_type_data,_event_d ata) SELECT " + _
      & mandant + " AS mandant," + id + " AS id_item, '" + nutzer + "' as nutzer, '" + aktion + "' as aktion, '" + _
      & DateTime.Now.ToUniversalTime() + "' as datum, " + m + " as _main_data, " + t + " as _type_data, " + e + " as _event_data";

      SqlCommand cmd = new SqlCommand(sqlString, conn);
      cmd.ExecuteNonQuery();
      closeDB();
      }

      Das Problem tritt auch auf, wenn ich main_data... direkt im SQL-String einbette.

      Axe

      Comment


      • #4
        Hallo,
        wenn das Programm zur Laufzeit über dynamisches SQL die Zeichenkette zusammenstellt und "am Stück" zum SQL Server schickt, arbeitet der Treiber/SQL Server die komplette Aufrufkette (Parse, Optimize, Generate, Execute) ab. Wenn der DataSet-Inhalt in einer BLOb-Spalte der Datenbank-Tabelle gespeichert werden soll, muss der Wert als Parameter übergeben werden:
        <code>
        INSERT INTO maindata_history (id_mandant, id_item, m, t, e) VALUES (@id_mandant, @id_item, @m, @t, qe);
        </code>
        Wenn in Visual Studio dafür eine SqlCommand-Komponente auf visuellem Weg konfiguriert wird, definiert der <i>System.Data.SqlDbType</i> den benötigten Datentyp, außerdem wird auch die max. übertragbare Länge jeden Parameters angegeben. Wird die SqlCommand-Instanz dann ausgeführt, erhält der SQL Server zuerst nur die parametisierte INSERT-Anweisung (d.h. der Parser sieht nur den "harmlosen" 1. Teil), die Parameter-Werte werden hinterhergeschickt (aber nicht mehr im Detail untersucht)

        Comment

        Working...
        X