我有以下方法用于从数据库填充DAO。它执行3次读取-一次读取主对象,两次读取某些翻译。
public bool read(string id, MySqlConnection c)
{
MySqlCommand m = new MySqlCommand(readCommand);
m.Parameters.Add(new MySqlParameter("@param1", id));
m.Connection = c;
MySqlDataReader r = m.ExecuteReader();
r.Read();
accountID = Convert.ToInt32(r.GetValue(0).ToString());
...
comment = r.GetValue(8).ToString();
r.Close();
m = new MySqlCommand(getAccountName);
m.Parameters.Add(new MySqlParameter("@param1", accountID));
m.Connection = c;
r = m.ExecuteReader();
r.Read();
account1Name = r.GetValue(0).ToString();
r.Close();
m = new MySqlCommand(getAccountName);
m.Parameters.Add(new MySqlParameter("@param1", secondAccountID));
m.Connection = c;
r = m.ExecuteReader();
r.Read();
account2Name = r.GetValue(0).ToString();
r.Close();
return true;
}
在
account2Name = r.GetValue(0).ToString();
行中,我得到以下错误:Invalid attempt to access a field before calling Read()
我不明白是什么问题-前面的电话读了!
最佳答案
这似乎在你的代码中起作用。您确定有一个值要在那里读取吗(即您的查询是否返回0行或null或其他不能转换为字符串的值?)