在 C# mysql 中获取单个列的值并将其放入文本框中
Get values of a single column in C# mysql and put it in textbox
我有这个 table 叫做 WeeklySales,有 2 列,DateandTime 和 Sales.现在,我的表单上有 3 个文本框。我想获得添加到 table 上的最新值,所以我有这个字符串。
string sql = "SELECT Sales FROM database.weeklysales ORDER BY DateandTime DESC LIMIT 3";
现在,我有这个数据库(可以说那个月是日期),
DateandTime | Sales
March | 0
February | 0
January | 0
并使用该字符串获得此结果:
Sales
0
0
0
现在,我想将第一行放入第一个文本框,然后将第二行放入第二个文本框,依此类推...现在,我不知道在 Datareader 中输入什么...
try
{
con.Open();
using (reader = cmd.ExecuteReader())
{
first.Text = ?
second.Text = ?
third.Text = ?
}
}
finally
{
con.Close();
}
我已经搜索过了,但不幸的是他们只找到了第一行。
SqlDataReader
class 有一个 Read()
方法,其中 returns 一个 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
因为您只有 3 个文本框要填写 - 没有循环,只需手动推进 reader。
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();
以下代码会对您有所帮助,
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;
}
}
}
避免重复或在多个对象的情况下
public void Example(MySqlDataReader dr)
{
TextBox a = new TextBox();
TextBox b = new TextBox();
TextBox c = new TextBox();
foreach(TextBox current in new List<TextBox> { a, b, c })
{
dr.Read();
current.Text = dr.GetValue(0).ToString();
}
}
我有这个 table 叫做 WeeklySales,有 2 列,DateandTime 和 Sales.现在,我的表单上有 3 个文本框。我想获得添加到 table 上的最新值,所以我有这个字符串。
string sql = "SELECT Sales FROM database.weeklysales ORDER BY DateandTime DESC LIMIT 3";
现在,我有这个数据库(可以说那个月是日期),
DateandTime | Sales
March | 0
February | 0
January | 0
并使用该字符串获得此结果:
Sales
0
0
0
现在,我想将第一行放入第一个文本框,然后将第二行放入第二个文本框,依此类推...现在,我不知道在 Datareader 中输入什么...
try
{
con.Open();
using (reader = cmd.ExecuteReader())
{
first.Text = ?
second.Text = ?
third.Text = ?
}
}
finally
{
con.Close();
}
我已经搜索过了,但不幸的是他们只找到了第一行。
SqlDataReader
class 有一个 Read()
方法,其中 returns 一个 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
因为您只有 3 个文本框要填写 - 没有循环,只需手动推进 reader。
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();
以下代码会对您有所帮助,
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;
}
}
}
避免重复或在多个对象的情况下
public void Example(MySqlDataReader dr)
{
TextBox a = new TextBox();
TextBox b = new TextBox();
TextBox c = new TextBox();
foreach(TextBox current in new List<TextBox> { a, b, c })
{
dr.Read();
current.Text = dr.GetValue(0).ToString();
}
}