我寫一個函數來讀取SQL數據庫中的數據,該函數如下DbDataReader,返回時SqlDataCommand.ExecuteReader()
public override Dictionary<string, DbDataReader> GetData()
{
using (_connection)
{
Dictionary<string, DbDataReader> dataDictionary = new Dictionary<string, DbDataReader>();
_xmlDoc.Load("Queries.xml");
XPathNavigator navigator = _xmlDoc.CreateNavigator();
XPathNodeIterator iterator = navigator.Select("//query");
while (iterator.MoveNext())
{
_command = new SqlCommand(iterator.Current.ToString());
_command.Connection = _connection;
_command.CommandText = iterator.Current.ToString();
SqlDataReader reader = _command.ExecuteReader();
dataDictionary.Add(iterator.Current.GetAttribute("name", ""), reader);
}
return dataDictionary;
}
}
但我得到一個編譯器錯誤,指出:
無法將源類型「system.data.common.dbdatareader」爲目標 型「system.data.sqlclient.sqldatareader」
但我查個ËMSDN:https://msdn.microsoft.com/en-us/library/9kcbe65k(v=vs.110).aspx
凡說的ExecuteReader的返回類型()是 'system.data.sqlclient.sqldatareader'
任何人可以幫助我嗎?謝謝!
即使我改了簽名,這個錯誤依然存在。我之所以使用這個簽名是因爲我想重寫一個基本函數,以便我可以用sql和oracle數據庫執行相同的執行。像聲明:http://stackoverflow.com/questions/33341435/override-a-method-return-type-dbdatareader-and-return-a-different-typesqldbda – Gravity
我沒有注意到你重寫了一種方法。所以基本上,你不能像在while循環中那樣將SqlDataReader添加到字典中。它必須是一個DbDataReader。 –
我對代碼進行了更新。這應該返回你適當的類型。 –