我有以下方法用于从数据库填充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或其他不能转换为字符串的值?)

09-10 09:46
查看更多