试图从数据库中获取数据并将其加载到datatable中会出现异常

use*_*417 1 c# datatable datarow

我试图通过使用以下查询获取数据库值和绑定到数据表

sql = @"SELECT member_Id, 30*memberToMship_ChargePerPeriod  / DateDiff(memberToMship_EndDate, 
         memberToMship_StartDate) As monthlyamount,
         PERIOD_DIFF(DATE_FORMAT(now(),'%Y%m'), 
         DATE_FORMAT(memberToMship_StartDate,'%Y%m'))  + (DAY(memberToMship_StartDate) < memberToMship_DueDay)+ (DAY(now()) > memberToMship_DueDay)-1  AS ExpPayments, 
         SUM(memberToMship_InductionFee+memberToMship_JoinFee+
             (IF(mshipOption_Period='year',
             TIMESTAMPDIFF (YEAR ,memberToMship_StartDate, memberToMship_EndDate),
             TIMESTAMPDIFF (MONTH ,memberToMship_StartDate, memberToMship_EndDate)) * memberToMship_ChargePerPeriod)) as value 
        FROM membertomships 
        INNER JOIN mshipoptions on membertomships.mshipOption_Id = mshipoptions.mshipoption_Id";
Run Code Online (Sandbox Code Playgroud)

这是我从数据库获取数据的代码

string memberid;
double value = 0.0;
double expectedpayment=0.0;
double monthlypayamount=0.0;
int dueday = 0;

dt = xxxxxx.GetData(sql, mf);    
if (dt != null && dt.Rows.Count > 0)
{
      memberid = Convert.ToInt32(dt.Rows[0]["member_Id"]).ToString();
      monthlypayamount = Convert.ToDouble(dt.Rows[1]["monthlyamount"]);
      expectedpayment = Convert.ToDouble(dt.Rows[2]["ExpPayments"]);
      value = Convert.ToDouble(dt.Rows[3]["value"]);       
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误

"索引超出范围异常"

和这样的错误

"位置1没有排"

有人请帮忙吗...

Blu*_*kMN 6

如果要从返回的第一行获取所有数据,则应在每行代码上对Rows使用index [0].如果您使用行[1]和行[2]等,那么您正在查看第二行和第三行等,如果您的查询仅返回一行数据,则无效.