преобразование объекта в строку имеет ошибку - PullRequest
1 голос
/ 04 октября 2011

Мой код такой:

SqlConnection scn = new SqlConnection(ClsPublic.GetConnectionString());
                   SqlCommand scm = new SqlCommand("SELECT Name FROM Table WHERE (Blogger = @Blogger)", scn);
                   scm.Parameters.AddWithValue("@Blogger", lblBloger.Text);
                   scn.Open();
                   MyLabel.Text = scm.ExecuteScalar().ToString();
                   scn.Close();

в этой строке:

lblLastNo.Text = scm.ExecuteScalar().ToString();

Имеет эту ошибку:

Ссылка на объект не установлена ​​для экземпляра объекта.

или при использовании оператора if выдает ту же ошибку

object Blogger= "";
if (Blogger.ToString() != string.Empty)
{
    ....
}

в приведенном ниже коде снова показывает ту же ошибку.

Ответы [ 4 ]

3 голосов
/ 04 октября 2011

Скорее всего, scm.ExecuteScalar() приносит вам нулевое значение.Вам необходимо проверить возвращаемое значение перед его использованием:

var result = scm.ExecuteScalar();
MyLabel.Text = result == null ? '' : result.ToString();
1 голос
/ 04 октября 2011

ExecuteScalar возвращает тип объекта. Вот почему у вас такое же поведение на scm.ExecuteScalar().ToString(); или Blogger.ToString().

Реализация по умолчанию для типа объекта метода ToString возвращает полное имя типа объекта, как показано в следующем примере.

Если этот объект НЕДЕЙСТВИТЕЛЕН, вы получите ошибку Object reference not set to an instance of an object.

Ваш второй случай с:

object blogger= "";
if (blogger.ToString() != string.Empty)
{
    ....
}

Не следует выдавать исключение, а возвращать строку, представляющую экземпляр объекта. Например: "YourNameSpace.Blogger"

1 голос
/ 04 октября 2011

scm.ExecuteScalar() возвращает ноль, или scm - ноль, или lblLastNo - ноль.Это единственная причина, по которой вы получаете ошибку «Ссылка на объект не установлена ​​..».

0 голосов
/ 04 октября 2011

Пожалуйста, приложите блок try catch, чтобы вы могли обрабатывать исключения во время выполнения, и это облегчает понимание проблемы.и для if (Blogger.ToString() != string.Empty) этот u может проверить условие Null или его строку.Затем вы можете проверить String.IsNullorEmpty

  string str=blogger.toString();
    if (String.IsNullOrEmpty(str)) 
            //do something
   else 
     //do other part

Нулевая строка или пустая строка

...