我正在用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()
有人可以指出我的错误吗? 提前谢谢。
答案 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();