我的这个名为 WeeklySales 的表格有2列,日期和时间和销售。现在,我的表单上有3个文本框。我想得到表中添加的最新值,所以我有这个字符串。
string sql = "SELECT Sales FROM database.weeklysales ORDER BY DateandTime DESC LIMIT 3";
现在,我有这个数据库(假设月份是日期),
DateandTime | Sales
March | $300
February | $500
January | $400
并使用该字符串获取此结果:
Sales
$300
$500
$400
现在,我想将第一行放入第一个文本框,然后将第二行放入第二个文本框,依此类推......现在,我不知道Datareader内部有什么内容......
try
{
con.Open();
using (reader = cmd.ExecuteReader())
{
first.Text = ?
second.Text = ?
third.Text = ?
}
}
finally
{
con.Close();
}
我已经搜索了但不幸的是他们只获得了第一行。
答案 0 :(得分:2)
SqlDataReader
类有一个Read()
方法,只要有更多行要读取,它就会返回一个bool。例如,您可以使用while循环来读取多行。
using (SqlDataReader reader = cmd.ExecuteReader()
{
while (reader.Read())
{
//Do your stuff here
}
}
有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read%28v=vs.110%29.aspx
答案 1 :(得分:2)
由于您只需要填写3个文本框 - 没有循环只需手动推进阅读器。
MySqlDataReader dr = cmd.ExecuteReader();
dr.Read();
first.Text = dr.GetValue(0).ToString();
dr.Read();
second.Text = dr.GetValue(0).ToString();
dr.Read();
third.Text = dr.GetValue(0).ToString();
答案 2 :(得分:1)
以下代码对您有所帮助,
using (reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
int i = 1;
while (reader.Read())
{
switch (i)
{
case 1:
first.Text = reader["Sales"].ToString();
break;
case 2:
second.Text = reader["Sales"].ToString();
break;
default:
third.Text = reader["Sales"].ToString();
break;
}
i += 1;
}
}
}