Как заполнить таблицу в C# из базы данных, используя метки - PullRequest
0 голосов
/ 28 марта 2020

Ниже приведен мой код для получения данных из моей базы данных oracle для отображения таблицы с несколькими строками в asp. net (C#). Те столбцы будут Имя, Раздел и Пол. Заголовки таблицы жестко закодированы, из базы данных следует заполнять только данные строк. При выполнении кода я получаю только 1-ю строку из базы данных. Остальные ряды не идут. Пожалуйста, предложите решение.

public void  GetDailyData()
    {
        using (OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["dataconn"].ToString()))
        {

            try
            {
                string query = @"SELECT  name,section, gender FROM t_student WHERE order by TRUNC(admissionDate)";               
                OracleCommand cmd = new OracleCommand(query, conn);
                conn.Open();
                OracleDataAdapter da = new OracleDataAdapter(cmd);


               DataSet ds = new DataSet();
               cmd.ExecuteNonQuery();
               da.Fill(ds);

               foreach (DataRow dr in ds.Tables[0].Rows)
               {


                    if (ds.Tables[0].Rows.Count > 0)
                   {
                        LabelName.Text = ds.Tables[0].Rows[0].Field<string>(0);
                       LabelSection.Text = ds.Tables[0].Rows[0].Field<string>(1) ;
                      LabelGender.Text = ds.Tables[0].Rows[0].Field<string>(2) ;


                 }

              }                                                   

            }
            catch (Exception ex)
            {
                throw ex;
            }            
        }

    }

1 Ответ

1 голос
/ 28 марта 2020

Вы видите только данные строки из первой строки, потому что это то, что вы извлекаете, когда говорите ds.Tables[0].Rows[0] - Строки [0] всегда будут первой строкой таблицы

Весь этот блок кода сбит с толку;

  • вы не можете отобразить несколько строк, используя одиночные метки - используйте компонент Grid и привязайте его к Dataatable.

  • Код использует al oop до go через строки таблицы, но проверяет, есть ли в таблице строки, внутри l oop (l oop не запускается если это не так), и вместо использования нумерованной строки он всегда получает доступ к первой строке при каждом проходе l oop.

  • Не используйте DataSet, просто создайте новый DataTable и заполните его - наборы данных предназначены для тех случаев, когда вы хотите работать с несколькими связанными таблицами данных, и в этом случае одна таблица бесполезна дополнительный слой.

  • Не выполняйте по команде команду ExecuteNonQuery, это бесполезная операция - адаптер данных выполнит запрос во время заполнения, вам не нужно это делать (а ExecuteNonQuery предназначен для вставки / обновления / удаления / создать et c - это выбор).

Ваш код может выглядеть следующим образом:

DataTable dt = new DataTable();
da.Fill(dt);
gridControl.DataSource = dt;
gridControl.DataBind();

Вот и все. Весь остальной код (кроме команды и соединения) должен быть выброшен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...