0

将新数据添加到 Access 数据库后,我似乎无法刷新 ComboBox。

这是我用来添加新数据的代码:

private void btnAddUser_Click(object sender, EventArgs e)
{
        AccountForm actFrm = new AccountForm();

        if (actFrm.ShowDialog() == DialogResult.OK)
        {
            try
            {
                this.oleDbDataAdapter1.InsertCommand.CommandText =
                    "INSERT INTO userTable (AccountName, Username, PopServer, PopPort, Psswrd, SmtpServer, SmtpPort, Email)" +
                    "VALUES     ('" + actFrm.txtAccName.Text + "','" + actFrm.txtUsername.Text + "','" + actFrm.txtPop3.Text + "','" + actFrm.txtPop3Port.Text + "','" + actFrm.txtPassword.Text + "','" + actFrm.txtSmtp.Text + "','" + actFrm.txtSmtpPort.Text + "','" + actFrm.txtEmail.Text + "')";

                //open the bridge between the application and the datasource
                this.oleDbConnection1.Open();

                this.oleDbDataAdapter1.InsertCommand.Connection = oleDbConnection1;

                //execute the query 
                this.oleDbDataAdapter1.InsertCommand.ExecuteNonQuery();

                //close the connection
                this.oleDbConnection1.Close();

                MessageBox.Show("User Added Successfully");  //inform the user
                //tried here to refresh and even open close the myConn connection. to no avail
            }
            catch (System.Data.OleDb.OleDbException exp)
            {
                //close the connection
                this.oleDbConnection1.Close();

                MessageBox.Show(exp.ToString());
            }
      }
}
4

2 回答 2

2

您的 BindingSource 是否使用 DataSet?如果是这样,您需要通过 DataSet 进行插入,并可能刷新您的绑定源。如果你这样做,你也将避免重复的插入逻辑。

或者,您可以只刷新 DataSet,但这种方法没有利用 DataSet 的功能,并且会导致大量重复代码。

于 2009-02-04T17:28:25.190 回答
0

我最近在 VB.NET 中遇到了同样的问题。我发现将数据源设置为 Nothing(我相信在 C# 中为 null),然后将其分配给我的对象列表解决了这个问题。

IE

  attendanceDataFiles.DataSource = Nothing
  attendanceDataFiles.DataSource = myFileList.files
于 2010-04-15T14:32:36.887 回答