2016-04-17 4 views
-2
System.Data.OleDb.OleDbCommandBuilder cb; //command builder 
    cb = new System.Data.OleDb.OleDbCommandBuilder(boosterbaseDa); //re-establish temporary connection 

    DataRow dRow = boosterbaseDs.Tables[drpCardSet.Text].NewRow(); //create new row in set 

    dRow[0] = drpCardSet.Text + "-EN" + txtCardSetNo.Text; //grab the data 
    dRow[1] = txtCardName.Text; 
    dRow[2] = drpCardRarity.Text; 
    dRow[3] = drpCardCatagory.Text; 
    dRow[4] = updCardInStock.Value; 

    MessageBox.Show(dRow[0] + ", " + dRow[1] + ", " + dRow[2] + ", " + dRow[3] + ", " + dRow[4]); 

    boosterbaseDs.Tables[drpCardSet.Text].Rows.Add(dRow); //add row 

    boosterbaseMaxRows = boosterbaseMaxRows + 1; 

    string cardTable = drpCardSet.Text; 

    boosterbaseDa.Update(boosterbaseDs, drpCardSet.Text); 

Ich scheine in der letzten Zeile immer fest zu sein, mit einem Fehler vonC# - Syntaxfehler in der INSERT INTO-Anweisung (eine nicht behandelte Ausnahme des Typs ‚System.Data.OleDb.OleDbException‘ aufgetreten in System.Data.dll)

Eine nicht behandelte Ausnahme des Typs ‚System.Data.OleDb.OleDbException‘ aufgetreten in System.Data.dll, Syntaxfehler in der INSERT INTO-Anweisung

ich weiß, gibt es ähnliche Fragen, aber ich bin damit ernsthaft festgefahren.

Die Tabelle existiert und ich kann eine Verbindung zur Datenbank herstellen.

Beispiele für die Daten gehen in (in der Tabelle "LOB") wäre LOB-DE001, Bob, Common, Monster, 1.

Danke im Voraus - Sam

+3

Können Sie zeigen Ihre ** ** Insert-Anweisung? –

+0

Was ist der Select-Befehl, mit dem Sie den DA initialisiert haben? Sind Sie sicher, dass Sie die richtigen Werte für diese neue Zeile zuweisen? Es gibt normalerweise ein wenig mehr Informationen, wenn Sie Detail anzeigen – Plutonix

+0

Hier wurde es initialisiert: string sql = "SELECT * Von" + drpCardSet.Text; boosterbaseDa = neuer System.Data.OleDb.OleDbDataAdapter (sql, boosterbaseCon); Update erfordert einen gültigen InsertCommand, wenn die DataRow-Auflistung mit neuen Zeilen übergeben wurde. ist das weitere Detail, und ja, ich bin sicher, dass sie die richtigen Werte sein müssen – user3258453

Antwort

0

Das funktionierte als ein Lösung.

string connetionString = null; 
OleDbConnection connection; 
OleDbDataAdapter oledbAdapter = new OleDbDataAdapter(); 
string sql = null; 
connetionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=../boosterbase.mdb"; 
connection = new OleDbConnection(connetionString); 
sql = "insert into " + drpCardSet.Text + " values('" + drpCardSet.Text + "-EN" + txtCardSetNo.Text + "','" + txtCardName.Text + "','" + drpCardRarity.Text + "', '" + drpCardCatagory.Text + "', '" + updCardInStock.Text + "')"; 
try 
{ 
    connection.Open(); 
    oledbAdapter.InsertCommand = new OleDbCommand(sql, connection); 
    oledbAdapter.InsertCommand.ExecuteNonQuery(); 
    MessageBox.Show("Row(s) Inserted !! "); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 

Von http://csharp.net-informations.com/dataadapter/insertcommand-oledb.htm

Via Update requires a valid InsertCommand when passed DataRow collection with new rows

Verwandte Themen