Sie sind auf Seite 1von 7

Implementando CommandTimeOut em DataSets Tipados.

Datasets para quem não conhece são objetos do ADO.Net, com o objetivo de ser
o repositório de dados deste objeto, possuindo tabelas, colunas, linhas, etc. Um DataSet
Tipado é uma classe que traz toda a estrutura das tabelas e possibilita o acesso às
colunas do banco de dados como se fossem meras propriedades desta classe. Duas
grandes vantagens em utilizar DataSet Tipado são:
• Poder visualizar e utilizar as tabelas do banco de dados como objetos de
sua aplicação;
• Reutilizar o código, pois uma vez criado o DataSet Tipado a sua
reutilização será baseada em definir uma nova instância desta classe.
O Visual Studio 2005 faz com que trabalhar com DataSets Tipados seja um
trabalho simples, pois o seu editor gera o código básico de CRUD (Create, Read,
Update e Delete) da tabela escolhida com apenas alguns cliques de mouse.
Porém ao criar um DataSet Tipado, o Visual Studio não disponibiliza uma
maneira de configurar o CommandTimeOut para o nosso DataSet, ou seja, o tempo de
resposta fica limitado a 30 segundos (TimeOut Padrão).
Então, se há no banco de dados uma consulta ou mesmo uma Procedure cujo
tempo de resposta é superior a 30 segundos utilizar DataSet Tipado gerará erro em
tempo de execução de TimeOut de banco de dados, o que gerará insatisfação por parte
do cliente.
Como contornar essa limitação é o que vou demonstrar nesse artigo.
Primeiro passo será criar o DataSet Tipado, para tanto adicione um novo item do
tipo “DataSet” com o nome de “Cliente.xsd” ao seu projeto como a Figura 1.

Figura 1 – Cliente.xsd

Com o arquivo criado, clique com o botão direito e insira um TableAdapter


como na Figura 2.
Figura 2 - TableAdapter

Figura 3 - Selecione o arquivo Data.mdf e clique em Next.


Figura 4 - Salve a conexão com o nome de ConnectionString e clique em Next.

Figura 5 - Escolha a opção de Use SQL statements e clique em Next.


Figura 6 - Selecione a tabela TbCadCliente e clique em Add e depois em Close.

Figura 7 – Selecione as duas colunas, Id e NomeCliente e clique em OK.


Figura 8 – Clique em Next.

Figura 9 – Clique em Finish.

O resultado final deve ser como a figura 10.


Figura 10 – DataSet Tipado criado.

Agora que o DataSet foi criado, precisamos criar uma nova classe com o nome
de “DataSetTimeOut”, onde será implementada a propriedade SelectCommandTimeOut
conforme a Figura 11.

Figura 11 – Criar a Classe DataSetTimeOut.

Abra o arquivo para edição e substitua o conteúdo dele pelo código abaixo.

Imports Microsoft.VisualBasic

Namespace ClienteTableAdapters
Partial Class TbCadClienteTableAdapter
Public Property SelectCommandTimeout() As Integer
Get
Return Me.CommandCollection(0).CommandTimeout
End Get
Set(ByVal value As Integer)
Me.CommandCollection(0).CommandTimeout = value
End Set
End Property
End Class
End Namespace

O código acima estende a classe TbCadClienteTableAdapter, classe essa que foi


gerada automaticamente pelo Visual Studio quando foi criado o DataSet.
A classe por sua vez foi inserida dentro do Namespace ClienteTableAdapters, o
Visual Studio cria um novo Namespace para cada arquivo de DataSet existente no
projeto, fazendo uso do seguinte padrão para o nomes de Namespace de DataSet
Tipado, concatenção entre nome do arquivo .xsd, no caso Cliente.xsd, com o texto
TableAdapters.
Após a breve explicação sobre as nomenclaturas do código acima, é preciso
entender o que vou feito. Foi implementado uma nova propriedade pública (visível a
todos os elementos do projeto em questão) chamada SelectCommandTimeout que
apenas lê e altera o valor da variável privada (visível apenas a classe a que pertence)
chamada CommandTimeout, que faz o controle do tempo de resposta limite.
Com essa implementação tornamos o acesso a variável CommanTimeout de
privado para público através da propriedade SelectCommandTimeout.
Após salvar o arquivo, já é possível utilizar essa nova propriedade do DataSet
Tipado Cliente como mostra o código abaixo.

Dim DsCliente As New ClienteTableAdapters.TbCadClienteTableAdapter


DsCliente.SelectCommandTimeout = 600

Pronto o DsCliente possui agora 10 minutos como tempo de resposta limite!

Forte abraço e divirta-se,

Igor Musardo
ivmplayer@gmail.com

Das könnte Ihnen auch gefallen