Сбой ASP.NET Reader для получения значений - PullRequest
1 голос
/ 17 июля 2011

Я пытаюсь прочитать значения в текстовое поле после поиска из базы данных с помощью процедуры сохранения. Смотрите пример кода ниже:

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. Это метод, и я передаю значения, как показано ниже:

1 Ответ

0 голосов
/ 12 июля 2012

Полагаю, одним из значений поля является 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...