ASP.NET读取器检索值失败
在使用存储过程从数据库中搜索后,我尝试将值读取到文本框中。请参见下面的示例代码:ASP.NET读取器检索值失败,asp.net,forms,Asp.net,Forms,在使用存储过程从数据库中搜索后,我尝试将值读取到文本框中。请参见下面的示例代码: while (reader.Read()) { string firstname = reader["FirstName"].ToString().Trim(); if (!string.IsNullOrEmpty(firstname)) { string fullName = reader["FirstName"].ToString().Trim() +
while (reader.Read())
{
string firstname = reader["FirstName"].ToString().Trim();
if (!string.IsNullOrEmpty(firstname))
{
string fullName = reader["FirstName"].ToString().Trim() +
reader["LastName"].ToString().Trim();
labelFname = reader["FirstName"].ToString().Trim();
labelSname = reader["LastName"].ToString().Trim();
msg = "Retrieval Successful";
}
}
我可以获取fullname和LabelName中的值,但无法继续使用LabelName。这是一个方法,我正在按如下方式传递值:我猜其中一个字段值为null,您正在对该null对象调用Trim方法,它抛出了一个错误。在访问值之前进行适当的空检查
string msg =string.empty;
while (reader.Read())
{
string fName=string.empty;
string lName=string.empty;
string fullName=string.empty;
if (!reader.IsDBNull(reader.GetOrdinal("FirstName")))
fName = reader.GetString(reader.GetOrdinal("FirstName"));
if (!reader.IsDBNull(reader.GetOrdinal("LastName")))
lName= reader.GetString(reader.GetOrdinal("LastName"));
fullName=fName.Trim()+ " "+lName.Trim();
msg = "Retrieval Successful";
}
编辑:将序号索引存储到变量并使用它,而不是每次在循环中调用GetOrdinal,这是一个很好的做法,尤其是处理这么多记录。它将提高代码执行的速度
int fNameLocation = reader.GetOrdinal("FirstName");
while (reader.Read())
{
string fName=string.empty;
string lName=string.empty;
string fullName=string.empty;
if (!reader.IsDBNull(fNameLocation))
fName = reader.GetString(fNameLocation );
//process Other fields
}
您确定,您对LastName有值吗?其次,您在FullName字符串中获取LastName?您收到了什么错误消息,即,为什么不能继续LabelName?是的,我在所有FullName和LastName中都有值:我在所有字段中都有值。我这样调用这个方法:saveToDb.SeachCHIsresul,this.txtName.Text,this.txtSname.Text;如果我不将它用作方法,它将返回所有值,但如果我尝试将其作为方法调用,它将失败。