【问题标题】:System.IndexOutOfRangeExceptionSystem.IndexOutOfRangeException
【发布时间】:2016-02-21 04:07:34
【问题描述】:

我想在文本框中显示数据库中的一些列。当我运行代码时,@ApplicantUsername出现错误

IndexOutOfRangeException

这是我的代码:

        cs.Open();
        SqlCommand cmd = new SqlCommand("SELECT ApplicantUsername, Branch, DescriptionOfHouse, DescritpionOfHouseType, LivingCondition, MembersOfHousehold, RealProperty, PersonalProperty, Collaterals, PurposeOfLoan, LoanDesired, MaxLoanVal, PromisoryNoteVal, MonthlyInstallment1, Terms, TotalMonthlyIncome, TotalMonthlyExpenses, Class, NarrativeReport FROM CustomerCreditReport WHERE ApplicantUsername = '" + uname + "'", cs);
        SqlDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            txtUsername.Text = reader["@ApplicantUsername"].ToString();
            txtBranch.Text = reader["@Branch"].ToString();
            txtDesc.Text = reader["@DescriptionOfHouse"].ToString();
            txtOAR.Text = reader["@DescritpionOfHouseType"].ToString();
            txtCond.Text = reader["@LivingCondition"].ToString();
            txtMem.Text = reader["@MembersOfHousehold"].ToString();
            txtReal.Text = reader["@RealProperty"].ToString();
            txtPersonal.Text = reader["@PersonalProperty"].ToString();
            txtCollateral.Text = reader["@Collaterals"].ToString();
            txtPurpose.Text = reader["@PurposeOfLoan"].ToString();
            txtDesired.Text = reader["@LoanDesired"].ToString();
            txtMLV.Text = reader["@MaxLoanVal"].ToString();
            txtPNV.Text = reader["@PromisoryNoteVal"].ToString();
            txtMI.Text = reader["@MonthlyInstallment1"].ToString();
            txtTerms.Text = reader["@Terms"].ToString();
            txtTotIncome.Text = reader["@TotalMonthlyIncome"].ToString();
            txtTotExpenses.Text = reader["@TotalMonthlyExpenses"].ToString();
            txtClass.Text = reader["@Class"].ToString();
            txtNarrative.Text = reader["@NarrativeReport"].ToString();
        }
        cs.Close();

你能帮我找到解决这个问题的方法吗?谢谢。

【问题讨论】:

  • 在 while 条件下尝试 reader.HasRows()
  • 这是我的表架构。

标签: c# asp.net sql-server error-handling


【解决方案1】:

从所有这些字段名称中删除 @

您将@ 用于添加到参数化查询的参数(您的示例中没有参数)。要像您正在做的那样从列中检索值,您不应该使用@,而应该使用列的普通名称。

【讨论】:

    【解决方案2】:

    请在下面找到正确的代码。从 datareader 读取数据时不应使用 @。

        cs.Open();
        SqlCommand cmd = new SqlCommand("SELECT ApplicantUsername, Branch, DescriptionOfHouse, DescritpionOfHouseType, LivingCondition, MembersOfHousehold, RealProperty, PersonalProperty, Collaterals, PurposeOfLoan, LoanDesired, MaxLoanVal, PromisoryNoteVal, MonthlyInstallment1, Terms, TotalMonthlyIncome, TotalMonthlyExpenses, Class, NarrativeReport FROM CustomerCreditReport WHERE ApplicantUsername = '" + uname + "'", cs);
        SqlDataReader reader = cmd.ExecuteReader();
    
        while (reader.Read())
        {
            txtUsername.Text = reader["ApplicantUsername"].ToString();
            txtBranch.Text = reader["Branch"].ToString();
            txtDesc.Text = reader["DescriptionOfHouse"].ToString();
            txtOAR.Text = reader["DescritpionOfHouseType"].ToString();
            txtCond.Text = reader["LivingCondition"].ToString();
            txtMem.Text = reader["MembersOfHousehold"].ToString();
            txtReal.Text = reader["RealProperty"].ToString();
            txtPersonal.Text = reader["PersonalProperty"].ToString();
            txtCollateral.Text = reader["Collaterals"].ToString();
            txtPurpose.Text = reader["PurposeOfLoan"].ToString();
            txtDesired.Text = reader["LoanDesired"].ToString();
            txtMLV.Text = reader["MaxLoanVal"].ToString();
            txtPNV.Text = reader["PromisoryNoteVal"].ToString();
            txtMI.Text = reader["MonthlyInstallment1"].ToString();
            txtTerms.Text = reader["Terms"].ToString();
            txtTotIncome.Text = reader["TotalMonthlyIncome"].ToString();
            txtTotExpenses.Text = reader["TotalMonthlyExpenses"].ToString();
            txtClass.Text = reader["Class"].ToString();
            txtNarrative.Text = reader["NarrativeReport"].ToString();
        }
        cs.Close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2021-12-19
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多