我有一些C#代碼動態生成一個SQL查詢,並通過IDbCommand.ExecuteScalar()執行它。這工作正常;只有一個結果與我在數據庫中的查詢匹配,並且總是返回結果。爲什麼IDbCommand.ExecuteReader()在IDbCommand.ExecuteScalar()成功時失敗?
但是就在最近,作爲支持DB中多重匹配的重構的第一步,我用一個ExecuteReader()替換了對ExecuteScalar()的調用。設置和數據庫訪問中的其他一切都是一樣的。但是返回的IDataReader不包含任何數據,並且每當我嘗試從中取出數據時都拋出InvalidOperationExceptions。
我知道數據還在;當我切換回ExecuteScalar()時,一切正常。這怎麼可能?
我正在使用NextResult()而不是Read()。哎呦。 – 2009-08-20 13:18:58