Desenvolvimento - Visual Basic .NET
VB.NET - Operações com dados que não retornam registros
Este artigo vai procurar tratar estes tipos de operações usando ADO.NET e mostrar como executá-las com SQL e os provedores gerenciados ADO.
por José Carlos MacorattiEste artigo vai procurar tratar estes tipos de operações usando ADO.NET e mostrar como executá-las com SQL e os provedores gerenciados ADO.
ADO.NET - Usando o objeto Command
O objeto Command da ADO.NET fornece o método ExecuteNonQuery para executar consultas que não retornam linhas (registros). Apesar de não retornar registros , qualquer parâmetro de saída ou valores retornados mapeados para parâmetros do objeto Comando são preenchidos com dados.
O método ExecuteNonQuery retorna o número de linhas afetados pelas operações de Insert , Update e Delete. Para todas as demais consultas o valor retornado é -1.
Quando uma consulta falha na execução o provedor gerenciado dispara uma exceção que você pode capturar no seu código.
Os provedores gerenciados ADO.NET possuem classes que fazem o tratamento das exceções. Esta classe de exceção é criada e disparada quando um erro é encontrado.
Executando comandos no SQL Server
No exemplo a seguir um instrução INSERT para incluir dados na tabela Categorias do banco de dados TesteWind é executada usando o método ExecuteNonQuery do objeto Command. O tratamento estruturado de exceções trata a exceção e fecha a conexão com o banco de dados:
Imports System.Data.SqlClient Dim sqlConexao As SqlConnection Dim sqlComando As SqlCommand Dim registrosAfetados As Integer Dim strConexao As String = "Server=(local);DataBase=TesteWind;User ID=;Password=" Try sqlConexao = New SQLConnection(strConexao) sqlComando = new SQLCommand() With sqlComando .CommandType = CommandType.Text .CommandText = "Insert Categorias (NomeDaCategoria,Descrição) Values ("Livros","Livros e artigos")" .Connection = sqlConexao End With sqlConexao.Open() registrosAfetados = sqlComando.ExecuteNonQuery() Catch ex As Exception msgbox " Erro : " & ex.Message Finally sqlConexao.close() End Try
Executando comandos com a coleção Parameters
A coleção Parameters do objeto Command é usada para definir os argumentos do procedimento armazenado ou da consulta parametrizada. Embora você possa definir um procedimento armazenado e um parâmetro Input como um comando do tipo texto (Command Text), usando a coleção Parameters você simplifica a colocação dos parâmetros no local e formato correto. Os parâmetros do tipo string contendo caracteres aspas são automaticamente formatados.
O código a seguir cria um comando que executa o procedimento armazenado IncluiCategoria no banco de dados TesteWind no SQL Server.
Imports System.Data.SqlClient Dim sqlConexao As SqlConnection Dim sqlComando As SqlCommand Dim registrosAfetados As Integer Dim parametro As SqlParameter Dim strConexao As String = "Server=(local);DataBase=TesteWind;User ID=;Password=" Try sqlConexao = New SQLConnection(strConexao) sqlComando = new SQLCommand() With sqlComando .CommandType = CommandType.StoredProcedure .CommandText = "IncluirCategoria" .Connection = sqlConexao End With parametro1 = sqlComando.Parameters.Add(New SQLParameter("@NomeCategoria",SQLDBType.NVarChar(16)) With parametro1 .Direction = ParameterDirection.Input .Value = "Livros" End With parametro2 = sqlComando.Parameters.Add(New SQLParameter("@Descricao",SQLDBType.NVarChar(15)) With parametro2 .Direction = ParameterDirection.Input .Value = "Livros e artigos" End With sqlConexao.Open() registrosAfetados = sqlComando.ExecuteNonQuery() Catch ex As Exception msgbox " Erro " & ex.Message Finally sqlConexao.Close() End Try
É claro que você deverá criar a stored procedure no SQL Server com o nome de IncluirCategorias. Abra o Enterprise Manager e expanda as ramificações e selecione o banco de dados TesteWind ; a seguir clique com o botão direito do mouse sobre o item Stored Procedure e na janela crie o procedimento armazenado parecido com :
CREATE PROCEDURE IncluirCategoria @NomeCategoria Varchar(15) , @Descricao VarChar(16) AS Insert into Categorias (NomeDaCategoria,Descrição) Values (@NomeCategoria,@Descricao) GO
Com isto podemos dizer que sempre que você for executar alguma operação que não retorne registros utilize o método ExecuteNonQuery do objeto Command para obter um melhor desempenho.
Até breve, e bons códigos .net para você...
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET