Announcement

Collapse
No announcement yet.

Syntaxfehler bei INSERT INTO-Anweisung OleDBAdapter.InsertCommand

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

  • Syntaxfehler bei INSERT INTO-Anweisung OleDBAdapter.InsertCommand

    Hallo Miteinander,
    ich möchte mittels InsertCommand.ExecuteNonQuery(); eine neue Zeile aus dem DataSet(Anzeige mittels DataGriedViewer) zurück in die DataSource (hier Excel) schreiben. Neue Zeile erscheint auch in der Anzeige(DatagridViewer) da dieser an das DataSet gebunden ist.

    Bekomme permanent einen Syntaxfehler bei INSERT INTO-Anweisung und kann mir net helfen:

    //Verbindungsstring zu Excel-Datei
    [highlight=c#]
    OleDbConnection con = new OleDbConnection();
    con.ConnectionString = "Data Source=" + strPfad + ";Provider=Microsoft.Jet.OLEDB.4.0;";
    con.ConnectionString += @"Extended Properties=""Excel 8.0;HDR=Yes""";
    OleDbDataAdapter adap = new OleDbDataAdapter(); //strSql, con);
    string sql = null;
    sql = "insert into " + ds.Tables[0] + " (Lfd, Datum, Art, Häufigkeit, Erläuterung, Andreas, Annett, Lebensmittel, Weggehen, Sontiges) values(" + ds.Tables[0].Rows[i-1] + ")";
    try
    {
    con.Open();
    adap.InsertCommand = new OleDbCommand(sql, con);
    adap.InsertCommand.ExecuteNonQuery();
    MessageBox.Show("Row(s) Insert !!");
    }
    catch (Exception ex)
    MessageBox.Show(ex.ToString());
    }
    [/highlight]

    Spaltennamen stimmen mit Excelspaltennamen überein. Frage, brauche ich die überhaupt, all Informationen stehen doch in ds.Tables[0].Rows[i]

    Schon einmal Danke für Eure Hilfe
    Zuletzt editiert von ibwib; 03.02.2011, 19:04.

  • #2
    einen Syntaxfehler
    Wir wollen helfen nicht raten. Also welchen Syntaxfehler!

    ds.Tables[0].Rows[i-1]
    Woher nimmst du i ? Dir ist klar das der Ausdruck eine DataRow Object (wie in der Hilfe nachzulesen) liefert und nicht rein zufällig eine Komma separierte Liste aller Feldwerte wie du sie hier brauchst?

    Code bitte richtig formatieren. Siehe Hinweise und Formatierung von C#-Code. Danach kann man sich die anderen Fehler ansehen.

    Comment


    • #3
      Hallo Ralf,
      i nehme ich aus
      //Ermittlung Anzahl Sätze in DataGridView
      [highlight=c#]
      int i = dataGridView.RowCount;
      i = ++i;
      [/highlight]

      Ich habe mir manuell (über Maskenfelder) einen neuen Datasatz aufgebaut und diesen mittels
      [highlight=c#]
      ds.Tables[0].Rows.Add(newRow);
      [/highlight]
      dem DataSet hinzugefügt. Der neue Satz wird mir auch gleich im DataGriedViewer angezeigt.
      Nun möchte ich eigentlich diesen Satz auch in die DataSource schreiben...

      Aber egal ob ich die VALUES im INSERT INTO mittels "+variable1+","+variable2+", usw. einbaue oder aber über
      [highlight=c#]
      ds.Tables[0].Rows[i]
      [/highlight]
      ich bekomme immer einen Syntaxfehler.

      Comment


      • #4
        So wie du das InsertCommand benutzt brauchst du keinen DataAdapter. Das passt so leider vorne und hinten nicht. Lohnt sich also nicht auf deine Detailfehler einzugehen.

        Sieh dir in der Hilfe nochmal den Teil an wie das Commando zusammengesetzt wird. Beachte insbesondere die Verwendung von Platzhalter (die ?). Und danach führt man nicht das Commando direkt aus sondern die Update Methode am DataAdapter.

        Comment

        Working...
        X