【发布时间】:2017-10-24 15:50:19
【问题描述】:
所以我有一个表格,其中有两个部分,一个要添加,一个要删除。 但问题是当我添加数据时,当我检查与删除部分关联的组合框时,我可以看到所有以前的数据,除了我刚刚添加的数据。因此,我需要某种解决方案来刷新并在单击“添加”按钮后立即将所有内容重新放入组合框中,但运气不好,最新数据不会显示。
添加按钮代码:
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();
}
这里的广告与我创建的类相关联,并包含插入、选择、删除、更新的所有方法。
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);
}
}
}
按钮删除代码:
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]));
}
【问题讨论】:
-
你能告诉我们
bt,DeleteSbj_Click()吗? -
@Wndrr 添加了代码
-
使用参数避免sql注入和格式化问题。您在 while-read 中的 for 循环看起来没有必要。您应该使用字段名称而不是索引,因为将来字段位置可能会改变。
-
我查看了代码我看不到问题...对不起。
-
@Wndrr 我没有说代码有任何问题。我只需要一个解决方案,例如当我添加或删除某些内容时,它也应该在应用程序内部同时更新,而不是在重新启动应用程序后
标签: c# ms-access oledb oledbcommand