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
    Hallo,

    wenn man die auszuführende SQL-Anweisung als Zeichenkette erst zur Laufzeit zusammenkettet, hat das gleich mehrere Nachteile. Besser ist es, eine parametisierte INSERT-Anweisung zu nutzen, da dann jeder Parameter <b>typsicher</b> deklariert und übergeben wird. Die Entwicklungsumgebung hat in diesem Fall die Chance, die Fehlerstelle exakt zu benennen. Im Fall des MS SQL Server könnte das zum Beispiel so aussehen:
    <pre>
    SqlConnection aCon = new SqlConnection(sConStr);
    aCon.Open();
    string sSQL = "INSERT INTO ANR (ANREDE) VALUES (@ANR)";
    SqlCommand aCmd = new SqlCommand(sSQL, aCon);
    SqlParameter aParam;
    aParam = aCmd.Parameters.Add("@ANR", SqlDbType.VarChar);
    aParam.Value = TextBoxANREDE.Text;
    aCmd.ExecuteNonQuery();
    </pre&gt

    Comment


    • #3
      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