使用select distinct列的c#mysql查询

时间:2013-12-23 20:09:36

标签: c# mysql mysqldatareader

我试图将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;

3 个答案:

答案 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() + " ";
    }
}