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()
有人能指出我的错误吗?
您错过了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();