Прошу прощение за беспокойство.
Хочу узнать:
1) Правильно ли я выполняю хранимую процедуру sp_login, возвращающую данные пользователя? Код запуска процедуры взят из форума и из MSDN. Получилось, что-то среднее:
- Код: Выделить всё
'Объявление подключения
Dim SQLcon As SqlClient.SqlConnection
SQLcon = New SqlClient.SqlConnection
'Объявление команды
Dim SQLcom As SqlClient.SqlCommand
SQLcom = New SqlClient.SqlCommand
'Объявление параметра
Dim P As SqlClient.SqlParameter
'Строка подключения
SQLcon.ConnectionString = "Server=(local)\SQLEXPRESS;uid=Sa;pwd=Password;database=MyDB"
'Подключение запроса
SQLcom.Connection = SQLcon
'Запрос к БД
SQLcom.CommandType = CommandType.StoredProcedure
SQLcom.CommandText = "sp_login"
'Параметр "@Log"
SQLcom.Parameters.Add("@Log", SqlDbType.NVarChar).Value = "Log1"
'Параметр "@Pas"
SQLcom.Parameters.Add("@Pas", SqlDbType.NVarChar).Value = "Pas1"
'Подключение
SQLcon.Open()
'Выполнение запроса
SQLcom.ExecuteNonQuery()
'Отключение
SQLcon.Close()
SQLcon = Nothing
SQLcom = Nothing
2) Как правильно получить данные хранимой процедуры:
Соответственно
- Код: Выделить всё
'Вывод результата
MsgBox("Result = " & CStr(SQLcom("ID_Personal")) & "", MsgBoxStyle.OkOnly, "Connect")
выдает ошибку, впрочем, как и конструкция
- Код: Выделить всё
'Выполнение запроса
Dim DR As SqlClient.SqlDataReader
DR = SQLcom.ExecuteReader()
'Вывод результата
MsgBox("Result = " & CStr(DR("ID_Personal")) & "", MsgBoxStyle.OkOnly, "Connect")
3) Есть ли разница в передачи параметров процедуре способами:
а)
- Код: Выделить всё
'Параметр "@Log"
SQLcom.Parameters.Add("@Log", SqlDbType.NVarChar).Value = "Log1"
'Параметр "@Pas"
SQLcom.Parameters.Add("@Pas", SqlDbType.NVarChar).Value = "Pas1"
и
б)
- Код: Выделить всё
'Параметр "@Log"
P = New SqlClient.SqlParameter
P.ParameterName = "@Log"
P.SqlDbType = SqlDbType.NVarChar
P.Direction = ParameterDirection.Input
P.Value = "Log1"
SQLcom.Parameters.Add(P)
'Параметр "@Pas"
P = New SqlClient.SqlParameter
P.ParameterName = "@Pas"
P.SqlDbType = SqlDbType.NVarChar
P.Direction = ParameterDirection.Input
P.Value = "Pas1"
SQLcom.Parameters.Add(P)
?
4)
Разъясните плиз смысл
- Код: Выделить всё
SQLcom.Connection = SQLcon
без которой
- Код: Выделить всё
SQLcom.ExecuteNonQuery()
не работает
Спасибо.