Построить массив строк из набора результатов запроса

#c# #asp.net #sql-server

#c# #asp.net #sql-сервер

Вопрос:

Что я пытаюсь сделать, так это в данный момент выбрать все имена пользователей (2 для тестирования) и передать их в массив строк.

Однако все результаты, которые я пробовал до сих пор, дали мне первое имя пользователя, и не все из них, поэтому, если я передам их в массив string, он, вероятно, имеет только 1 значение.

Этикетка1.Текст показывает только 1 результат.

Я пробовал executescalar, ExecuteNonQuery, executereader

   string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;

        using (SqlConnection con = new SqlConnection(constr))
        {

            using (SqlCommand cmd = new SqlCommand())
            {

                    con.Open();
                    string queries = "select username from loginuser";
                    using (SqlCommand biju = new SqlCommand(queries, con))
                    {

                    SqlDataReader sda = null;
                    sda = biju.ExecuteReader();

                    while (sda.Read())
                    {
                        Label1.Text = sda["username"].ToString();
                    }

                  /*  sda = biju.ExecuteReader();
                        string a = Convert.ToString(sda);
                        Label1.Text = a; */
                        string message = string.Empty;
                        message = "list cleared for applicants to register again.";
                        ClientScript.RegisterStartupScript(GetType(), "alert", "alert('"   message   "');", true);


                        // Three valid username/password pairs: Scott/password, Jisun/password, and Sam/password.
                        string[] users = new string[] { Label1.Text };
  

Комментарии:

1. Вы присваиваете каждому имени пользователя одну и ту же переменную в вашем while цикле, поэтому, когда вы хотите добавить его в свой массив, у вас остается только последнее. Вам нужно добавить свои имена пользователей в ваш массив внутри вашего while цикла.

2. Я еще не разобрался со строкой, отображая данные на ярлыке перед передачей в строку, чтобы сначала посмотреть, работает ли она. Однако в метке отображается только 1 данные. Я добавил label.text внутри цикла while , но он по-прежнему отображает только 1 данные.

3. Последнее имя. Это: Label1.Text = sda["username"].ToString(); перезаписывает каждый раз содержимое метки (почему здесь метка в качестве хранилища, а затем присваивает значение reault переменной?). Добавьте новую строку к существующему тексту. Было бы лучше изменить string[] users на List<string> и .Add() новую строку (имя) в цикле. Также потому, что this: string[] users = new string[] { Label1.Text }; в любом случае вернет вам только одну строку.

4. Тогда вам понадобится Label1.Text = sda["username"].ToString();

5. Спасибо всем, это решаемо! Я просто создаю list.add в цикле, а затем преобразую список в массив. Спасибо Джимми и Дейлу за помощь мне 🙂