Paulo César Viana

Desenvolvedor .NET | IBM Certified Solution Designer - RUP V7.0

Paulo Viana

Desenvolvedor .NET (C# e VB.NET), IBM Certified Solution Designer - Rup V7.0

SqlParameter

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


Categories: ASP.NET | C# | VB.NET
Permalink | Comentários (0) | Post RSSRSS comment feed

VB6

Para quem "ainda" utilizada o VB6 e precisa fazer uso de DLL's atraves do COM+, o colega Leandro Amorim postou um ótimo exemplo: http://imasters.uol.com.br/artigo/15184/dotnet/criando_componetes_com_vb6_em_c/


Tags: , ,
Categories: C# | General
Permalink | Comentários (0) | Post RSSRSS comment feed