Algo que sempre insisto em errar. Quando faço _SqlParameter = new SqlParameter(2), eu devo informar a quantidade de parâmetros (?), que neste caso representa 4 parâmetros (0,1,2,3). Neste caso o resultado fica:
parameters(0) = New SqlParameter("@param_1", SqlDbType.Int, 4)
parameters(1) = New SqlParameter("@param_2", SqlDbType.Int, 4)
parameters(2) = New SqlParameter("@param_3", SqlDbType.Int, 4)
parameters(3) = New SqlParameter("@param_4", SqlDbType.Int, 4)
Ok. Se fosse dois?
_SqlParameter = new SqlParameter(2)
_SqlParameters(0) = New SqlParameter("@param_1", SqlDbType.Int, 4)
_SqlParameter(1) = New SqlParameter("@param_2", SqlDbType.Int, 4)
Até aqui tranquilo. Agora o que eu sempre erro é quando se trata apenas de um (1) parâmetro. O valor informado neste caso é 0 (zero) _SqlParameter = new SqlParameter(0), pois é a mesma coisa de se trabalhar com mapeamento de tabelas de um dataSet. Você sempre começa com a coluna 1, mas que é representada pelo índice 0 (zero). A mesma coisa para recuperar uma linha: DataSet.Tables[0].Rows[0]["NomeColuna"]. O meu erro é sempre colocar 1, gerando erro, pois é esperado dois parâmetros.
VB.NET
Private Function PegarSelectCommandPesquisarPacoteSolicConsultaBDPorIdStatus() As SqlCommand Const commandText As String = "spu_PesquisarPacoteSolicConsultaBDPorIdStatus" Dim parameters As SqlParameter() = SqlHelperParameterCache.GetCachedParameterSet(Me.m_connection.ConnectionString, commandText) If (parameters Is Nothing) Then parameters = New SqlParameter(0) {} parameters(0) = New SqlParameter("@FK_GISSTATUSCONSULTABD", SqlDbType.Int, 4) SqlHelperParameterCache.CacheParameterSet(Me.m_connection.ConnectionString, commandText, parameters) End If Dim command As SqlCommand = New SqlCommand(commandText, Me.m_connection) With command .CommandType = CommandType.StoredProcedure End With SqlHelper.AttachParameters(command, parameters) Return command End Function |
C#
|
private SqlCommand PegarSelectCommandPesquisarPacoteSolicConsultaBDPorIdStatus() { const string commandText = "spu_PesquisarPacoteSolicConsultaBDPorIdStatus"; SqlParameter[] parameters = SqlHelperParameterCache.GetCachedParameterSet(this.m_connection.ConnectionString, commandText); if ((parameters == null)) { parameters = new SqlParameter[0]; parameters(0) = new SqlParameter("@FK_GISSTATUSCONSULTABD", SqlDbType.Int, 4); SqlHelperParameterCache.CacheParameterSet(this.m_connection.ConnectionString, commandText, parameters); } SqlCommand command = new SqlCommand(commandText, this.m_connection); { command.CommandType = CommandType.StoredProcedure; } SqlHelper.AttachParameters(command, parameters); return command; }
|
http://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlparameter.aspx
http://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlparameter(en-us,VS.71).aspx