Печать содержимого базы данных в нескольких текстовых полях без использования набора данных - PullRequest
0 голосов
/ 03 апреля 2012
using Visual.Web.Developer.2010.Express;
using SQL.Server.Management.Studio.2008.R2;



Что-то новое на C # здесь ..
Я получил первую строку столбца, но как мне получить остальные значения?
У меня установлены некоторые текстовые полявверх, и sqldatareader помещает первое значение в первое текстовое поле investigate1.Прямо сейчас я настроил его так, чтобы все текстовые поля выводили на печать первую строку этого столбца .. Застрял в этой части ... хочу, чтобы остальные там были ... Значение "a" в investigate1,значение "b" в investigate2 и т. д. Спасибо за поиск

Мой соответствующий код

HTML

<asp:TextBox ID="investigate1" class="hexen" runat="server"></asp:TextBox><br />
<asp:TextBox ID="investigate2" class="hexen" runat="server"></asp:TextBox><br />
<asp:TextBox ID="investigate3" class="hexen" runat="server"></asp:TextBox><br />
<asp:TextBox ID="investigate4" class="hexen" runat="server"></asp:TextBox><br />
<asp:TextBox ID="investigate5" class="hexen" runat="server"></asp:TextBox><br />


C #

 try
            {

                ConnFlux.Open();

                SqlCommand CmdFlux1 = new SqlCommand("select TbValue from InvestigateValues where TbId = '1'", ConnFlux);


                RdrFlux1 = CmdFlux1.ExecuteReader();



                while (RdrFlux1.Read())
                {
                    investigate1.Text = RdrFlux1.GetValue(0).ToString();
                    investigate2.Text = RdrFlux1.GetValue(0).ToString();// What would I have
                    investigate3.Text = RdrFlux1.GetValue(0).ToString();// to change about these
                    investigate4.Text = RdrFlux1.GetValue(0).ToString();// to print the corresponding
                    investigate5.Text = RdrFlux1.GetValue(0).ToString();// values to the corresponding textbox?

                }
            }






sqldb
Да, это только два столбца вэта база данных
My Sql database

Ответы [ 3 ]

3 голосов
/ 03 апреля 2012

Вместо того, чтобы использовать 5 отдельных элементов управления TextBox, вы можете исследовать, используя Repeater .Элемент управления Repeater сможет обрабатывать случаи, когда в вашей базе данных больше или меньше 5 записей.

1 голос
/ 03 апреля 2012

Вы должны изменить это следующим образом:

Изменить ваш запрос ...

SqlCommand CmdFlux1 = new SqlCommand("select TbValue from InvestigateValues order by TbId", ConnFlux);

А теперь сделайте это:

RdrFlux1.Read();
investigate1.Text = RdrFlux1.GetValue(0).ToString();
RdrFlux1.Read();
investigate2.Text = RdrFlux1.GetValue(0).ToString();
RdrFlux1.Read();
investigate3.Text = RdrFlux1.GetValue(0).ToString();
RdrFlux1.Read();
investigate4.Text = RdrFlux1.GetValue(0).ToString();
RdrFlux1.Read();
investigate5.Text = RdrFlux1.GetValue(0).ToString();

И вот вамимейте это, ужасный кусок кода, который делает именно то, что вам нужно. Серьезно , посмотрите на ответ @Michael Bowersox;Я был бы удивлен, если бы текстовое поле для каждой строки действительно то, что вам нужно.

Может быть, вы должны делать что-то вроде этого:

  • Удалите гдечасть вашего запроса, чтобы получить все строки.
  • Используйте DataTable data = new DataTable(); data.Load(CmdFlux1.ExecuteReader());, чтобы создать DataTable, который содержит все строки в своем свойстве Rows.
  • Выполните итерацию в DataTable и создайте списокобъекты, представляющие набор данных.
  • Назначьте список объектов в качестве источника данных для GridView, Repeater, DataList или другого элемента управления, который отображает динамический набор данных.

Что-товот так, более или менее в зависимости от многих вещей.

0 голосов
/ 03 апреля 2012

Ты имеешь в виду что-то подобное?

// ...

if (RdrFlux1.Read()) {
    investigate1.Text = RdrFlux1.GetValue(0).ToString();
    if (RdrFlux1.Read()) {
        investigate2.Text = RdrFlux1.GetValue(0).ToString();
        if (RdrFlux1.Read()) {
            investigate3.Text = RdrFlux1.GetValue(0).ToString();
            if (RdrFlux1.Read()) {
                investigate4.Text = RdrFlux1.GetValue(0).ToString();
                if (RdrFlux1.Read())
                    investigate5.Text = RdrFlux1.GetValue(0).ToString();
             }
        }
    }
}

Если в результате запроса имеется несколько строк, это просто проигнорирует пропущенные строки (и оставит предыдущее содержимое в оставшихся текстовых полях). Если строк слишком много, строки «переполнения» будут просто игнорироваться. Настоящая обработка ошибок оставлена ​​читателю в качестве упражнения.

Кстати, поскольку TbValue представляется (n)varchar, вы можете использовать SqlDataReader.GetString вместо GetValue + ToString.

...