Announcement

Collapse
No announcement yet.

Date und Double mit Insert Befehl in DB schicken

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

  • Date und Double mit Insert Befehl in DB schicken

    Hallo an alle,

    ich schaffe es nicht eine Variable vom Typ Double(Date) an meine Datenbank zu schicken, da der +-Operator CDbl() nicht unterstützt. Wie löse ich dieses Problem?
    Kann kein Beispiel für dieses Problem finden.

    Hier die Codestelle:

    Dim strSQL As String = "INSERT INTO LotManager (CLotNumber ) VALUES (" + CDbl(Lot) + ")"

    Danke für eure Hilfe!

  • #2
    Hallo,

    gewöhne Dir von Anfang an an, SQL-Befehle nicht als String zusammenzusetzen, sondern mit Parametern zu verwenden. Damit vermeidest Du alle derartigen Konvertierungsprobleme sowie Sql-Injection. Aus Deinem Beitrag ist nicht zu erkennen, welchen DbProvider Du verwendest (und von VB habe ich keine Ahnung), deshalb hier als Anhaltspunkt einen kurzen C#-Code:
    Code:
    string strSQL = "INSERT INTO LotManager (CLotNumber ) VALUES (@Lot)";
    DbCommand cmd = new DbCommand(strSQL);
    cmd.Parameters.AddWithValue("@Lot", Lot);
    Die nötige Konvertierung macht dann der DbProvider selbst richtig.

    Bitte beachte, dass jeder DbProvider die Parameter anders verarbeitet: mit oder ohne Namen, '@' oder ':' oder '?'. Bitte lies in der SDK-Doku nach.

    Viel Erfolg! Jürgen

    Comment


    • #3
      Was macht denn die Methode CDbl().
      Ich verstehe das Problem nicht ganz.
      Grundsätzlich ist es, wie Jürgen schon sagt falsch das SQL-Statement per Sring zusammen zu bauen.
      Gruss

      Mirko

      Mappen statt hacken mit dem .NET O/R Mapper Invist

      Comment


      • #4
        Originally posted by mirkom76 View Post
        Was macht denn die Methode CDbl().
        Nanu, muss ich auch Dich auf die SDK-Doku hinweisen? Das ist eine Funktion für die Typkonvertierung unter VB.
        Ich verstehe das Problem nicht ganz.
        Ich verstehe es auch nur ansatzweise. Vermutlich liegt es darin, dass CDbl() einen Double zurückliefert, JustStarted-Anonymus das Ergebnis in einen String einbauen will.

        Aber das Problem verschwindet von allein, wenn er DbParameter verwendet. Deshalb bin ich darauf nicht genauer eingegangen. Jürgen

        Comment


        • #5
          Danke für deine Antwort Jürgen oder Thomas

          Natürlich hast du recht. Aber nachdem ich unglaublich lange an diesem eigentlich einfachen Problem gesessen bin hab ich wohl den Wald vor lauter usw.

          Habs so ähnlich gemacht wie in deinem Vorschlag (nur eben für VB)

          Danke nochmal

          Comment


          • #6
            Originally posted by JustStarted View Post
            Danke für deine Antwort Jürgen oder Thomas
            Da die Anrede in einem Forum "per Du" läuft und ich mit "Jürgen" unterschreibe...

            Freut mich, wenn ich helfen konnte. Jürgen

            Comment

            Working...
            X