2016-03-13 2 views
0

Я не знаю, почему я получаю предупреждение от Visual Studio для кода ниже:переменного X используется, прежде чем он был объявлен

Dim cmd As SqlCommand 
cmd.Parameters.AddWithValue("@password", pw.tostring) 
Try 
      myconn.open 
      cmd = New SqlCommand("UPDATE Customers SET [email protected] WHERE [email protected]", myconn) 

Это предупреждающее сообщение я получаю: Код серьезности Описание Состояние подавления строки файла проекта Предупреждение BC42104 Переменная 'Cmd' используется до того, как ей присвоено значение. Исключительное исключение ссылки может возникнуть во время выполнения.
Цените помощь

ответ

3

Вы обращаетесь свойство Parameters ЦМД:

Dim cmd As SqlCommand 
cmd.Parameters.AddWithValue("@password", pw.tostring) ' <== You can't use cmd yet! 

, прежде чем создать его экземпляр в попытке:

Try 
     myconn.open 

     ' This is where you are instantiating the object instance: 
     cmd = New SqlCommand("UPDATE Customers SET [email protected] WHERE [email protected]", myconn) 

При изменении этого, он будет работы:

Dim cmd As SqlCommand 
cmd = New SqlCommand("UPDATE Customers SET [email protected] WHERE [email protected]", myconn) 

' You could combine the two above lines into one like this: 
'Dim cmd As New SqlCommand("UPDATE Customers SET [email protected] WHERE [email protected]", myconn) 

cmd.Parameters.AddWithValue("@password", pw.tostring) 

    Try 
     myconn.open 

Это также лучше, потому что только команда myconn.open должна быть в Try/Catch, поскольку это единственная строка, которая может вызвать исключение. Try/Catch следует использовать только для кода, который может вызвать исключение по вине разработчика. Добавление параметра в команду не сделает этого, но фактическое взаимодействие с базами данных может.

+0

Wow благодарит за ответ. Я так многому научился от такого маленького кода: D ps: я буду принимать как ответ, как только это позволит мне – Quattro

Смежные вопросы