0

何よりもまず、私は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();
        }
    }
4

1 に答える 1

0

getListAdmin() 内の静的データテーブル オブジェクトのインスタンス化を削除してから試してください。

つまり、tableAdmin = new DataTable("Administrateurs");getListAdmin() メソッド内を削除します

于 2012-08-21T02:02:03.650 に答える