我不断遇到此错误
商店数据提供者返回的数据读取器没有 足够用于查询的列。
我已经尝试过不同的方式来处理退货,但没有一种有效。
var r = myDb.spInsertBankDeposit(accountNumber, serialID,
payer, transferFrom, decimal.Parse(depAmount, CultureInfo.InvariantCulture),
remarks, fulldate, time,tradingCh, 2);
^这是直接从数据库实体myDB
调用的,我尝试使用.FirstOrDefault()
,ToList()
,ToString()
-相同的错误
public string InsertBankDeposit(DepositTransactionModel m)
{
return DO_DB.spInsertBankDeposit(m.AccountNumber, m.SerialCode, m.AppliedAccountName, m.AppliedAccountNumber, decimal.Parse(m.DepositAmount, CultureInfo.InvariantCulture),
m.Remarks, m.TransactionDate, m.TransactionTime, m.TradingChannel, m.PlatformID).FirstOrDefault().Msg;
}
^当我打电话给var r = spInsertBankDeposit(model)
我无法显示整个sp,但这是最后一行。SELECT 'Success|Deposit transaction saved successfully!' AS [Msg]
更新/编辑:
方法InsertBankDeposit
在这里被调用:
^这很好。但是,当我像这样在dr.Reader()
循环内调用相同的InsertBankDeposit时:
foreach (DataRow row in result.Tables[0].Rows)
{
var r = spInsertBankDeposit(model);
//string s = spInsertBankDeposit(model);
}
我想知道是什么问题,因为我有一个方法可以调用正常工作的同一函数InsertBankDeposit
。在Excel文件的阅读器循环中调用该错误时,我会得到错误。
答案 0 :(得分:0)
可能导致该错误的一种可能性是,如果存储过程提前退出而不返回您期望的字符串。您可以通过修改SP并删除所有多余的代码并仅返回字符串来进行测试。如果可行,则问题出在您删除的代码内部,而不是您调用SP的方式。