ASP.NET : Controlando Nulls e vazios nas querys


Eventualmente o parâmetro para a realização de uma determinada query pode estar null ou vazio. Por exemplo, quando a origem do parâmetro for uma caixa de texto, o usuário pode simplesmente pedir para fazer a pesquisa sem digitar nada.

Existem 2 propriedades que são determinantes para o resultado nesses casos:

O SQLDataSource possui a propriedade CancelSelectOnNullParameter, que determina que se o parâmetro por null a query deverá ser cancelada (default).

Os parâmetros, cada um individualmente, possuem uma propriedade chamada ConvertEmptyStringToNull, que determina que uma string vazia recebida como parâmetro deve ser convertida para valor null antes de ser passada ao banco (default).

Essa 2ª propriedade, ConvertEmptyStringToNull, não aparece diretamente no wizard. Precisa ser configurada através das advanced properties do parâmetro, indo na janela de propriedades do sqlDataSource, selecionando a propriedade selectQuery e, na janela que se abre, selecionando o parâmetro e clicando em advanced properties.

Em geral apenas uma das duas precisa ser configurada. No exemplo de uma textbox servindo de filtro, alterando o ConvertEmptyStringToNull para false, a query passa a rodar mesmo com a caixa vazia, pois o parâmetro agora é uma string vazia e não o Null.

É claro que a instrução select utilizada (ou, quem sabe, uma stored procedure) precisa estar pronta para receber um parâmetro vazio.