1

データベースで利用可能なすべての動物を取得し、コンソールに表示する必要があります。以下のコードを試してみましたが、「NullReference Exception」(オブジェクト参照がオブジェクトのインスタンスに設定されていません) が発生しています。私が正しいアプローチに従っているかどうか教えてください。

コード:

static void Main(string[] args)
{
    AnimalListDao objDao = new AnimalListDao();
    objDao.getPetAnimalList();
    AnimalList objAnim = new AnimalList();
    foreach(var item in objAnim.animalListObj)     // Null Reference Exception occurs here
    {
         Console.WriteLine(item.Animals);
         Console.ReadLine();
    }
}

ビジネスクラス:

class petAnimals
    {
        public string Animals { get; set; } 
    }

    class AnimalList
    {
        private List<petAnimals> _animalListObj;
        public List<petAnimals> animalListObj
        {
            get
            {
                return _animalListObj;
            }
            set
            {
                _animalListObj = value;
            }
        }
    }

    class AnimalListDao
    {
        AnimalList obAni = new AnimalList();
        petAnimals objAnimal = null;
        public void getPetAnimalList()
        {
            string commandStr = "select petAnimals from animal";
            string conStr = "Data Source=localhost;Initial Catalog=PetTable;UserId=root;Password=;";
            List<petAnimals> objList = new List<petAnimals>();
            MySqlConnection con = new MySqlConnection(conStr);
            MySqlCommand cmd = new MySqlCommand(commandStr,con);
            MySqlDataAdapter dap = new MySqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            dap.Fill(ds);
            foreach (DataRow dss in ds.Tables[0].Rows)
            {
                objAnimal = new petAnimals();
                objAnimal.Animals = dss["petAnimals"].ToString();
                objList.Add(objAnimal);
            }
            obAni.animalListObj = objList;
        }
    }
4

4 に答える 4

0
AnimalListDao objDao = new AnimalListDao();

now the objDao is initial,and has nothing that is null !

you must execute this method:objDao.getPetAnimalList();

thus,objDao is filled by some datas and you can foreach it.
于 2013-07-24T06:27:50.160 に答える