我试图将DISTINCT行(这是一个小字符串)放在一个以文本框为目标的字符串变量中,但它只返回列中具有不同内容的一些行。我使用了类似的代码但是针对datagridview并且工作正常。我尝试了不同的方法,我错了吗?
stConsulta = "SELECT distinct symbol from ticks";
MySqlCommand MyCmd = new MySqlCommand(stConsulta,cnn);
MyCmd.Connection = cnn;
MyCmd.CommandText = stConsulta;
MySqlDataReader myreader = MyCmd.ExecuteReader();
if (myreader.HasRows)
{
while (myreader.Read())
{
myreader.Read();
stSymbols = stSymbols + myreader.GetString("symbol") + " ";
}
}
cnn.Close();
textBox1.Text = stSymbols;
答案 0 :(得分:3)
对于初学者,请勿两次致电myReader.Read()
。你正在跳过其他所有行。
您表示行数不多,但您可能还希望使用StringBuilder
来提高效率。
...
var stSymbols = new StringBuilder();
while (myreader.Read())
stSymbols.Append(myreader.GetString("symbol") + " ");
...
textBox1.Text = stSymbols.ToString();
答案 1 :(得分:1)
忽略循环中的这一行
myreader.Read();
当你在while(myreader.Read())的条件下使用它时,它开始读取它。所以不要在循环中再次调用它。这就是你的错误。
if (myreader.HasRows)
{
while (myreader.Read())
{
stSymbols = stSymbols + myreader["symbol"].ToString() + " ";
}
}
你很高兴
答案 2 :(得分:0)
if (myreader.HasRows)
{
while (myreader.Read())
{
stSymbols = stSymbols + myreader["symbol"].ToString() + " ";
}
}