Я хочу, чтобы получить результат моей хранимой процедуры (с SQL Server 2008) в VB.net 2012VB.net получение SQL Server приводит к
Вот моя хранимая процедура:
CREATE PROCEDURE [dbo].[csp_LoginAuthentication]
@employeeid VARCHAR (20),
@password VARCHAR (20),
@accountstatus INT OUT,
@logincount INT OUT
AS
BEGIN
SET NOCOUNT ON;
SELECT
@accountstatus = account_status,
@logincount = logincount
FROM
strato_blueapplesmis.dbo.app_login
WHERE
1 = 1
AND employee_id = @employeeid
AND password = @password
END
Когда я выполнение моей хранимой процедуры, я получаю результаты, которые я хочу:
Редакция: Вот мой текущий код, благодаря Steve's предложение ниже:
Dim sqlConnct As New classSQLConnection
If sqlConnct.MSSQLConn.State = ConnectionState.Open Then sqlConnct.MSSQLConn.Close()
With sqlConnct.MSSQLConn
.Open()
Dim msSQLComm As SqlCommand = New SqlCommand("csp_LoginAuthentication", sqlConnct.MSSQLConn)
msSQLComm.CommandType = CommandType.StoredProcedure
msSQLComm.Parameters.Add("@employeeid", SqlDbType.VarChar).Value = txtEmployeeID.Text
msSQLComm.Parameters.Add("@password", SqlDbType.VarChar).Value = txtPassword.Text
Dim accntStat As Integer
Dim loginCnt As Integer
accntStat = Convert.ToInt32(msSQLComm.Parameters("@accountstatus").Value)
loginCnt = Convert.ToInt32(msSQLComm.Parameters("@logincount").Value)
msSQLComm.ExecuteNonQuery()
MsgBox(accntStat)
End With
И я даже пытался Joel Coehoorn «s предложение:
Dim accntStat As Integer
Dim loginCnt As Integer
Dim sqlConnct As New classSQLConnection
If sqlConnct.MSSQLConn.State = ConnectionState.Open Then sqlConnct.MSSQLConn.Close()
With sqlConnct.MSSQLConn
Dim msSQLComm As SqlCommand = New SqlCommand("csp_LoginAuthentication", sqlConnct.MSSQLConn)
msSQLComm.CommandType = CommandType.StoredProcedure
msSQLComm.Parameters.Add("@employeeid", SqlDbType.NVarChar, 20).Value = txtEmployeeID.Text
msSQLComm.Parameters.Add("@password", SqlDbType.NVarChar, 20).Value = txtPassword.Text
msSQLComm.Parameters.Add("@accountstatus", SqlDbType.Int).Direction = ParameterDirection.InputOutput
msSQLComm.Parameters.Add("@logincount", SqlDbType.Int).Direction = ParameterDirection.InputOutput
sqlConnct.MSSQLConn.Open()
msSQLComm.ExecuteNonQuery()
accntStat = CInt(msSQLComm.Parameters("@accountstatus").Value)
loginCnt = CInt(msSQLComm.Parameters("@logincount").Value)
End With
MsgBox(accntStat)
Оба кода дают мне необработанную ошибку для msSQLComm.ExecuteNonQuery()
:
Необработанное исключение из type 'System.Data.SqlClient.SqlException' произошел в System.Data.dll
Дополнительная информация rmation: Процедура или функция 'csp_LoginAuthentication' ожидает параметра '@accountstatus', который не был предоставлен.
Я действительно ценю помощь каждого здесь.
Замечание: вы не должны ** использовать префикс 'sp_' для хранимых процедур. Microsoft [зарезервировала этот префикс для собственного использования (см. * Именование сохраненных процедур *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) и вы рискуете столкнуться с именем когда-нибудь в будущем. [Это также плохо для производительности вашей хранимой процедуры] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Лучше просто просто избегать 'sp_' и использовать что-то еще в качестве префикса - или никакого префикса вообще! –
сделано, спасибо, что просветили меня –
Дорогой Бог, это простой текстовый пароль !? 0_0 –