C# System.IndexOutOfRangeException
我想在文本框中显示数据库中的一些列。运行代码时,C# System.IndexOutOfRangeException,c#,asp.net,sql-server,error-handling,C#,Asp.net,Sql Server,Error Handling,我想在文本框中显示数据库中的一些列。运行代码时,@applicationusername 索引自动异常 这是我的密码: cs.Open(); SqlCommand cmd = new SqlCommand("SELECT ApplicantUsername, Branch, DescriptionOfHouse, DescritpionOfHouseType, LivingCondition, MembersOfHousehold, RealProperty, P
@applicationusername
索引自动异常
这是我的密码:
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();
你能帮我找到解决这个问题的方法吗。谢谢。从所有字段名中删除
@
将
@
用于添加到参数化查询中的参数(示例中没有参数)。要像现在这样从列中检索值,不应使用@
,而应使用列的普通名称。请在下面找到正确的代码。从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();
请在while条件中尝试reader.HasRows(),这是我的表架构。