Announcement

Collapse
No announcement yet.

VB.NET: SQL Insert Statement - Datumformatierung

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

  • VB.NET: SQL Insert Statement - Datumformatierung

    Schönen Sonntag Nachmittag VBler,

    ich habe ein kleines Problem mit einem SQL Insert Statement.
    Ich möchte aus einem Datatable mit einer For Each Schleife Zeile für Zeile in eine Datenbank schreiben.

    Eine Verbindung zur Datenbank bekommt er auch.

    Das Problem liegt beim Datum, dass er es richtig Formatiert, es soll wie folgt in der Datenbank eingefügt werden (Beispiel): 31.12.2005

    [...]

    Wie bekomm ich es hin, dass das Datum nur einmal dort steht und nicht mit Uhrzeit?

    Ebenfalls wird ein Simikolon am Ende nicht eingefügt....
    Kann mir bitte jemand helfen, oder Ratschläge geben?

    Bin schon im Internet am googlen gewesen, jedoch nichts gefunden was mir weiterhilft....
    Zuletzt editiert von Sirus; 08.03.2011, 19:57.

  • #2
    Wie bekomm ich es hin, dass das Datum nur einmal dort steht und nicht mit Uhrzeit?
    Dein Programmcode ansehen....

    Zuerst machst du ein Select case.. und formatierst dein Datum.
    Nach dem Ende des Select erfolgt ein nochmaliges

    StrSQLDatensatzEinfuegen += String.Format("{0},", cell.Value)


    womit der Wert - wenn es ein Datum ist - nochmals eingefügt wird.

    Besser ist es hier mit einem if..else zu arbeiten. Das Select case ist hier sinnlos.
    Christian

    Comment


    • #3
      Verwende parametrisierte Anweisungen. Damit gehtst du neben den Formatierungsproblemen bei Datumsfeldern auch SQL-Injection aus dem Weg.

      Comment


      • #4
        Wdh:

        Besser ist es hier mit einem if..else zu arbeiten. Das Select case ist hier sinnlos.

        oder wenn es ein Select Case sein soll eine Case Else verwenden und in diesen


        StrSQLDatensatzEinfuegen += String.Format("{0},", cell.Value)


        schreiben
        Christian

        Comment


        • #5
          If cell.ValueType.Name = "DateTime" Then
          StrSQLDatensatzEinfuegen += String.Format("{0:#MM\/dd\/yyyy#},", cell.Value)
          End If
          Wo ist da ein else?

          Da kommt das Gleiche raus wie bei dem Select Case
          Christian

          Comment


          • #6
            Nach dem Next mittels ganz normaler Stringverarbeitung das letzte Zeichen löschen

            StrSQLDatensatzEinfuegen=StrSQLDatensatzEinfuegen. Substring(0, StrSQLDatensatzEinfuegen.Length - 1)
            Christian

            Comment


            • #7
              Danke, es läuft, er rattert aus dem Datatable jede Zeile durch und schreibt den Datensatz in einer Tabelle rein!!!

              Jedoch noch ein kleiner Fehler, beim letzten Datensatz:
              Syntaxfehler in der INSERT INTO-Anweisung.

              "insert into test values(,,,,,,);"

              Sieht man auch in der Tabelle:
              Bilde habe ich entfernt, da es nicht mehr benötigt wird...

              Bei einer anderen Funktion habe ich einfach - 1 gemacht, jedoch kann ich das in diesem Abschnitt nicht machen, oder?

              edit:
              Konnte das Problem selbst lösen!

              Nochmals vielen vielen Dank, du hast mir sehr gut geholfen, mir ist auch nun einiges klarer geworden!
              Danke!
              Zuletzt editiert von Sirus; 09.01.2011, 22:48.

              Comment

              Working...
              X