C#Oledb在应用程序中更新数据

时间:2017-10-24 15:50:20

标签: c# ms-access oledb oledbcommand

所以我有一个表单,其中有两个部分要添加,一个要删除。 enter image description here 但问题是当我添加数据时,之后当我检查与删除部分相关联的组合框时,我可以看到除了刚刚添加的数据之外的所有先前数据。所以我需要某种解决方案来刷新并在我点击添加按钮后立即将所有内容放入组合框中,但没有运气,最新数据不会显示。

添加按钮代码:

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]));
    }

1 个答案:

答案 0 :(得分:0)

我试图使用另一个类执行sql查询(我创建了一个并使用不同的方法编写所有查询和连接,每个类似插入,删除,选择)所以我不需要一次又一次地编写整个命令但是对于某些它不起作用的原因。我不得不一次又一次地写下每一个命令,这完美地起作用了。