MySqlCommand()。ExecuteReader()。GetString()不起作用

时间:2011-08-15 03:00:39

标签: c# mysql

我正在用C#语言处理MySql。 我正在尝试从我的数据库中获取一些数据。 这些字段的组织方式如下:

foo baa 
38737 22222 

如果我的哈希值等于foo,我需要获得baa的值 我试过这个: 我的代码(不工作)

 MySqlConnection con = new MySqlConnection("Server=localhost;Database=test;Uid=user;Pwd=pass;");
 con.Open();
 MySqlCommand cmd = new MySqlCommand();
 cmd.CommandText = string.Format("SELECT * FROM info WHERE baa = '{0}'", Hash); ;
 cmd.Connection = con;
 MySqlDataReader reader = cmd.ExecuteReader();
String res = reader.GetString(0); 

我收到以下错误:

Invalid attempt to access a field before calling Read() 

有人可以指出我的错误吗? 提前谢谢。

2 个答案:

答案 0 :(得分:11)

您错过了reader.Read()来电:

 MySqlDataReader reader = cmd.ExecuteReader();
 while(reader.Read())
 {
     String res = reader.GetString(0); 
     //...
 }

答案 1 :(得分:3)

尝试:

string res;
using(MySqlDataReader reader = cmd.ExecuteReader())
{
    if(reader.Read())
        res = reader.GetString(0);
    else
        res = "not found";
}

如果更改SQL命令以返回单个值,例如:

"SELECT foo FROM info WHERE baa = '{0}' LIMIT 1"

然后您还可以使用cmd.ExecuteScalar()

string res = cmd.ExecuteScalar().ToString();