Как загрузить данные из базы данных в список - PullRequest
0 голосов
/ 14 ноября 2018

Моя программа может загружать в заголовки списка, но не фактически данные из всей таблицы.

(как я подключаюсь к базе данных):

const string connectionString = "Data Source=test;Initial Catalog=dbi391731;User ID=test;Password=test";
        SqlConnection conn = new SqlConnection(connectionString);

Яиспользуя класс для загрузки данных:

public List<ScoreMdw> GetScoreMdwList()
        {
            List<ScoreMdw> scoremdwList = new List<ScoreMdw>();
            conn.Open();
            string query = ("Select employeeid, questionid, score from contentment");
            SqlCommand cmd = new SqlCommand(query, conn);

            try
            {
                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        ScoreMdw sm = new ScoreMdw((int)dr["employeeid"], (int)dr["questionid"], (char)dr["score"]);
                        scoremdwList.Add(sm);
                    }
                }

            }
            catch (Exception ex)
            {
                Exception error = new Exception("error", ex);
                throw error;
            }

            finally
            {
                conn.Close();
            }

            return scoremdwList;
        }

В цикле while я использую другой класс:

class ScoreMdw
    {
        private int employeeid;
        private int questionid;
        private char score;

        public ScoreMdw(int nr, int id, char s)
        {
            this.employeeid= nr;
            this.questionid= id;
            this.score = s;
        }

        public int EmployeeId
        {
            get { return employeeid; }
        }

        public int QuestionId
        {
            get { return questionid; }
        }

        public char Score
        {
            get { return score; }
        }

        public override string ToString()
        {
            string s = string.Format("{0} \t{1} \t{2}", this.employeeid, this.questionid, this.score);
            return s;
        }
    }

В моем главном окне я делаю это:

 private void btnLoadScores_Click(object sender, RoutedEventArgs e)
        {
            scoremdwList = new List<ScoreMdw>();

            try
            {
                conn.Open();

                List<string> headers = so.GetContentmentHeaders();

                foreach (string header in headers)
                    txtHeader.Text += header + "\t";

                scoremdwList = so.GetScoreMdwList();
                lbScores.ItemsSource = scoremdwList;
            }

            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            finally
            {
                conn.Close();
            }
        }

Я получаю ошибку, которую я сделал в классе («ошибка»).Я не знаю, что я делаю не так?Может быть что-то со связью?Я открываю и закрываю это неправильно?

1 Ответ

0 голосов
/ 14 ноября 2018

Могу я попросить вас показать нам бывшее сообщение? Итак, мы знаем, что может быть возможной ошибкой.

try
{
   using(SqlDataReader dr = cmd.ExecuteReader())
   {
       while(dr.read())
       {
          ScoreMdw sm = new ScoreMdw((int)dr["employeeid"], (int)dr["questionid"], (char)dr["score"]);
          scoremdwList.Add(sm);
       }
   }
}
catch(Exception ex)
{
   System.Diagnostics.Debug.WriteLine(ex.Message); // <= here you will get you errormessage that is important to fix your error.
   Exception error = new Exception("error", ex);
   throw error;
}
...