Announcement

Collapse
No announcement yet.

Syntaxfehler in der INSERT INTO-Anweisung ?

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

  • Syntaxfehler in der INSERT INTO-Anweisung ?

    hi leute,

    string insert ="INSERT INTO running (day, month, year, kw, hour, minute, second, distance, puls, kcal, remark, eventpara) VALUES ('"+tag+"','"+monat+"','"+jahr+"','"+kwoche+"','"+ stunde+"','"+minute+"','"+sekunde+"','"+meter+"',' "+puls+"','"+kcal+"','"+bemerkung+"','"+veranstalt ung+"')";


    kann mir mal eine sagen, wo da ein fehler ist. '"+variable+"' sind parameter aus meine methode, die übergeben werden.

    danke + gruss
    der olaf

  • #2
    Es wäre hilfreich, wenn Du den Inhalt vom String "insert" postest
    Schöne Grüße, Mario

    Comment


    • #3
      Hallo Olaf,

      wie du selber gemerkt hast, ist dieser Code sehr schwer zu debuggen. Eventuelle Fehler sind durch die unübersichtliche Verkettung von Strings kaum noch zu finden.

      Es gibt mehrere Möglichkeiten den Code zu optimieren:<p>

      <b>StringBuilder</b><br>
      Mit einem <b>StringBuilder</b> kann man einfacher String miteinander verketten. Außerdem ist diese Lösung weitaus performanter.<p>

      <b>String.Format</b><br>
      Mit der Methode Format kann man durch Platzhalter in einem String einfach die Stelle angeben, wo der Wert eingefügt werden soll: String.<b>Format</b>("Parameter: {0}", name);<p>

      <b>SQL-Anweisung mit Parametern / StoredProcedure</b><br>
      Die beste Lösung allerdings wäre eine SQL Anweisung mit Parametern oder eine Stored Procedure (wenn die DB dies unterstützt). Ähnlich der String.Format() Methode kann man sich vorstellen, dass die Parameter quasi Platzhalter sind, die mit den entsprechenden Werten gefüllt werden.<p>

      Das ist nur so als Tipp..

      Comment


      • #4
        Hallo Olaf

        Hier hast du noch eine zweite Idee wie man ein INSERT nutzen kann. ich nutze diese moeglichkeit lieber um nicht jedesmal ...Parameters.Add fuer jedes feld schreiben zu muessen.
        Ich hoffe es hilft dir.

        andre

        <PRE>
        private OleDbConnection oconn;
        private OleDbAdapter dae;
        private OleDbCommand cme;
        private DataSet dse;

        // Connection / SelectAnweisung ...

        private void InitInsertCommand()
        {
        this.dae.InsertCommand = this.oconn.CreateCommand();
        this.dae.InsertCommand.CommandText = "INSERT INTO Einsatz (AGId, Aufgaben, Zeit, ... usw) VALUES (@AGId, @Aufgaben, @Zeit, ... usw)";
        // kann hier alle Parameter mit einer Zeile uebergeben
        this.AddParms(this.dae.InsertCommand,"AGId","Aufga ben","Zeit",... usw);
        }

        private void AddParms(OleDbCommand cmd, params string[] cols)
        {
        foreach ( String column in cols )
        {
        cmd.Parameters.Add ( "@" + column, OleDbType.Char, 0, column );
        }
        }

        </PRE&gt

        Comment


        • #5
          Hallo Olaf

          Hier hast du noch eine zweite Idee wie man ein INSERT nutzen kann. ich nutze diese moeglichkeit lieber um nicht jedesmal ...Parameters.Add fuer jedes feld schreiben zu muessen.
          Ich hoffe es hilft dir.

          andre

          <PRE>
          private OleDbConnection oconn;
          private OleDbAdapter dae;
          private OleDbCommand cme;
          private DataSet dse;

          // Connection / SelectAnweisung ...

          private void InitInsertCommand()
          {
          this.dae.InsertCommand = this.oconn.CreateCommand();
          this.dae.InsertCommand.CommandText = "INSERT INTO Einsatz (AGId, Aufgaben, Zeit, ... usw) VALUES (@AGId, @Aufgaben, @Zeit, ... usw)";
          // kann hier alle Parameter mit einer Zeile uebergeben
          this.AddParms(this.dae.InsertCommand,"AGId","Aufga ben","Zeit",... usw);
          }

          private void AddParms(OleDbCommand cmd, params string[] cols)
          {
          foreach ( String column in cols )
          {
          cmd.Parameters.Add ( "@" + column, OleDbType.Char, 0, column );
          }
          }

          </PRE&gt

          Comment

          Working...
          X