我尝试使用存储过程从数据库中搜索后将值读取到文本框。请参阅以下示例代码:
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
和labelFname
中获取值,但我无法前往labelSname
。这是一个方法,我传递的值如下:
答案 0 :(得分:0)
我猜其中一个字段值为null
,您在该Trim
对象上调用null
方法,并且它会抛出错误。在访问值之前进行适当的空值检查。
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
}