Заполнение list из таблицы SQL SERVER C# WinForms

Рейтинг: 0Ответов: 2Опубликовано: 02.02.2023

Пытаюсь заполнить list из 1 столбца таблицы SQL SERVER для дальнейшего вывода list[i] в label1, label 2 и тд. Лист заполняется только данными System.Data.DataRow . Подскажите что делаю не так? Возможно есть способ попроще. К примеру заполнить массив строками из столбца БД.

int rr = 0;
            SqlConnection connection = new SqlConnection(connectionString);
            SqlDataAdapter adapter = new SqlDataAdapter("SELECT Answer FROM Answer", connection);
            DataTable table = new DataTable();
            adapter.Fill(table);
            List<string> list = new List<string>();
            foreach (DataRow row in table.Rows)
            {
                list.Add(row.ToString());
                row[rr].ToString();// - к отдельной ячейке в указанной строке
                
            }

// здесь просто уже игрался по разному
            label1.Text = Convert.ToString(question[0]);
            label2.Text = list[0];
            label3.Text = Convert.ToString(list[1]);
            label4.Text = Convert.ToString(list[2]);
            label5.Text = Convert.ToString(list[3]);

Лист заполняется только данными System.Data.DataRow . Подскажите что делаю не так? Возможно есть способ попроще. К примеру заполнить массив строками из столбца БД.

Ответы

▲ 0Принят

Спасибо, получилось по другом!

     List<dynamic> questions = new List<dynamic>();
        List<dynamic> answers = new List<dynamic>();
        List<dynamic> results = new List<dynamic>();
SqlConnection connection = new SqlConnection(connectionString);
            //string query2 = "select * from \"dbo.Question\"";
            string query2 = "select * from Question";
            SqlCommand cmd2 = new SqlCommand(query2, connection);
            DataTable table2 = new DataTable();
            SqlDataAdapter adapter2 = new SqlDataAdapter(cmd2);
            adapter2.Fill(table2);
            foreach (DataRow row in table2.Rows)
            {
                var item = new
                {
                    IDQuestion = row["IDQuestion"],
                    Question = row["Question"]
                };
                questions.Add(item);
            }
            //получаю ответы
            //string query = "select * from \"dbo.Answer\"";
            string query = "select * from Answer";
            SqlCommand cmd = new SqlCommand(query, connection);
            DataTable table = new DataTable();
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.Fill(table);

            foreach (DataRow row in table.Rows)
            {
                var item = new
                {
                    IDAnswer = row["IDAnswer"],
                    Answer = row["Answer"],
                    Point = row["Point"],
                    IDQuestion = row["IDQuestion"]
                };
                answers.Add(item);
            }
            //заполняю первый вопрос + ответы
            label1.Text = questions[0].Question;
            label2.Text = answers[0].Answer;
            label3.Text = answers[1].Answer;
            label4.Text = answers[2].Answer;
            label5.Text = answers[3].Answer;
▲ 0
 table.Rows[0].ItemArray[1].ToString();

Попробуйте обращаться именно к нужной колонке ItemArray[1]