更新数据源后,列表框不显示新行

时间:2012-08-21 01:23:50

标签: c# winforms listbox

首先,我使用的是C#并使用Visual Studio 2010并且仍然是学生。

我有一个列表框,显示我的数据库中管理员的名称。 当我向数据库添加另一个管理员时,更新在数据库中完成,但名称未添加到列表框中。

我试过在这个问题上阅读了很多帖子,但没有一个答案对我有用。预先感谢您的帮助。 所以这是我的代码的错误部分:

class adminDAO
    {
        public static Administration admin;
        private static Connexion connect;
        private static OleDbDataReader reader;
        private static OleDbCommandBuilder cmdBuilder;
        private static OleDbDataAdapter da_Admin;
        private static DataSet ds_Admin;
        private static DataTable tableAdmin = new DataTable("Administrateurs");

        private static int nbLignes = 0;

        public static void getListAdmin()
        {
            string req = "SELECT * FROM Administrateurs";
            da_Admin = new OleDbDataAdapter(req, connect.dbconnect);
            ds_Admin = new DataSet();
            da_Admin.Fill(ds_Admin, "Administrateurs");
            tableAdmin = new DataTable("Administrateurs");

            da_Admin.Fill(tableAdmin);

            admin.bS_Admin.DataSource = tableAdmin;
            admin.lb_admin.DataSource = admin.bS_Admin;
            admin.lb_admin.DataBindings.Add("Text", admin.bS_Admin, "nomAdmin");

            nbLignes = ds_Admin.Tables["Administrateurs"].Rows.Count;
        }

        public static void setAdmin(string nomAdmin, string username, string password)
        {
            connect = Connexion.getConnexion();

            try
            {
                nbLignes = nbLignes + 1;
                cmdBuilder = new OleDbCommandBuilder(da_Admin);

                string req = "INSERT INTO Administrateurs VALUES(@noAdmin, @nomAdmin, @username, @password)";
                OleDbCommand insertCommand = new OleDbCommand(req, connect.dbconnect);
                insertCommand.Parameters.AddWithValue("@noAdmin", nbLignes);
                insertCommand.Parameters.AddWithValue("@nomAdmin", nomAdmin);
                insertCommand.Parameters.AddWithValue("@username", username);
                insertCommand.Parameters.AddWithValue("@password", password);

                insertCommand.ExecuteNonQuery();

                da_Admin.Update(tableAdmin);

            }
            catch(OleDbException ex)
            {
                MessageBox.Show("Erreur de mise à jour : " + ex.Message);
            }
            connect.exitConnexion();
        }
    }

1 个答案:

答案 0 :(得分:0)

在getListAdmin()

中删除静态数据表对象的实例化后,请尝试一下

即在getListAdmin()方法中删除tableAdmin = new DataTable("Administrateurs");