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
是的,这些是此数据库中仅有的两列
答案 0 :(得分:3)
您可能希望使用Repeater控件进行调查,而不是使用5个单独的TextBox控件。当数据库中有多于或少于5条记录时,Repeater控件将能够处理这些情况。
答案 1 :(得分:1)
你必须这样改变它:
更改您的查询...
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的回答;如果每行都有一个文本框,那么我会感到惊讶。
也许你应该做这样的事情:
data = new DataTable(); data.Load(CmdFlux1.ExecuteReader());
创建一个DataTable,用于保存其Rows属性中的所有行。类似的东西,或多或少取决于很多东西。
答案 2 :(得分:0)
你的意思是这样的吗?
// ...
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
。