MySqlCommand(). executereader (). getstring()不起作用

本文关键字:不起作用 getstring executereader MySqlCommand | 更新日期: 2023-09-27 18:05:29

我正在使用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() 
有人能指出我的错误吗?

MySqlCommand(). executereader (). getstring()不起作用

您错过了reader.Read()呼叫:

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

尝试:

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();