So habe ich ein Formular, in dem es zwei Abschnitte eins zum Hinzufügen und eins zum Löschen gibt. Aber das Problem ist, wenn ich Daten hinzufügen und nach dem, wenn ich die Combobox mit Abschnitt zu löschen überprüfen ich sehe alle vorherigen Daten mit Ausnahme der, die ich gerade hinzugefügt habe. Also brauche ich irgendeine Art von Lösung zum Aktualisieren und wieder alles in Combobox, sobald ich auf Hinzufügen klicken, aber kein Glück, die neuesten Daten werden nicht angezeigt.C# Oledb Update-Daten in der Anwendung
-Code für Schaltfläche Hinzufügen:
private void btnAddSubj_Click(object sender, EventArgs e)
{
OleDbDataReader cmd = ad.select("SELECT TOP 1 ID FROM subjects WHERE ID = " + int.Parse(txtSubjID.Text));
if (cmd.Read())
{
MessageBox.Show("Subject ID you entered is taken, please select a different one");
}
else
{
ad.insert("insert into subjects (`ID`,`subjectName`) values(" + int.Parse(txtSubjID.Text) + ",'" + txtSubjName.Text + "')");
}
populateComboBoxSubjName();
}
Hier Anzeige an Klasse zugeordnet, die ich erstellt und enthält alle Methoden zum Einfügen, auswählen, löschen, aktualisieren.
Code für populateComboBoxSubjName:
private void populateComboBoxSubjName()
{
comboBoxSubjName.Items.Clear();
OleDbDataReader cmd = ad.select("SELECT * FROM subjects");
while (cmd.Read())
{
for (int f = 0; f < cmd.FieldCount; f+=2)
{
string data = (cmd.GetValue(f).ToString() + "-" + cmd.GetValue(f + 1).ToString());
comboBoxSubjName.Items.Add(data);
}
}
}
Schaltfläche Löschen Code:
private void btnDeleteSubj_Click(object sender, EventArgs e)
{
string selected = this.comboBoxSubjName.GetItemText(this.comboBoxSubjName.SelectedItem);
string[] idToDelete = selected.Split('-');
ad.delete("DELETE FROM subjects WHERE ID=" + int.Parse(idToDelete[0]));
}
Können Sie uns auch 'bt, DeleteSbj_Click()' zeigen? – Wndrr
@Wndrr hinzugefügt den Code –
Verwenden Sie Parameter, um SQL-Injektion und Formatierungsprobleme zu vermeiden. Ihre for-Schleife innerhalb der while-read sieht nicht notwendig aus. Sie sollten die Feldnamen anstelle von Indizes verwenden, da sich die Feldpositionen in Zukunft ändern können. – LarsTech