Neste artigo vamos aprender como usar as classes ADO.NET para realizar as tarefas básicas como : acessar , obter dados , incluir dados , excluir dados e atualizar dados em páginas ASP.NET ( o código usado é VB.NET). Neste artigo vou me ater aos banco de dados Access e SQL Server por questão de tempo e para não tornar o artigo muito extenso. Vamos lá...
Sempre que formos trabalhar com banco de dados em páginas ASP.NET deveremos importar os seguintes namespaces:
Banco de dados Access | Banco de Dados SQL Server |
System.Data System.Data.OleDb |
System.Data System.Data.SqlClient |
Nota: Você pode usar o namespace System.Data.OleDb com o Microsoft SQL Server e também se for acessar o Oracle.(è claro que não terá acesso as funcionalidades do namespace System.Data.SqlClient.
Você já deve estar careca de saber que a primeira coisa que você precisa fazer para acessar um banco de dados é criar uma conexão com o banco de dados.
SQL Server | Access |
<%@
Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.SqlClient" %> <% Dim conexao As SqlConnection conexao = New SqlConnection( "server=localhost;database=Pubs;uid=sa" ) conexao.Open() %> |
<%@
Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.OleDb" %> <% Dim conexao As OleDbConnection conexao = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASource=c:\teste.mdb" ) conexao.Open() %> |
Como funciona ?
Nota: Você não precisa definir um parâmetro Provider para a conexão usando as classes SQLConnection. Estas classes trabalham diretamente com o protocolo TDS (Tabular Data Stream). Você também não pode usar um Data Source Name (DSN) quando abrir uma conexão com a classe SQLConnection , para isto , use o namespace System.Data.OleDb
Na conexão com o Access temos que informar o nome do provedor OLEDB - Microsoft.Jet.OLEDB.4.0 - e o caminho do banco de dados no servidor. Para conectar com outro banco de dados deverá usar um provedor específico. Assim para conectar com o Oracle existe o provedor MSDAORA.
Para usar um DSN com a classe OleDbConnection podemos usar o seguinte código :
Conexao = New OleDbConnection( "DSN=Nome_DSN" )
Neste caso você é forçado a usar o OLEDB para o provedor ODBC e não o provedor OLEDB nativo do banco de dados. Isto pode afetar o desempenho de acesso aos dados.
Ao invocar o método Open , a conexão tem 15 segundos para ser efetivada antes de expirar por time out. Para alterar este valor padrão você pode definir outro valor , o código abaixo aumenta o valor para 90 segundos:
Conexao.ConnectionTimeout = 90
Agora que já sabemos como criar uma conexão com um banco de dados , vamos usar esta conexão para incluir dados em uma tabela do banco de dados. Vamos usar o comando SQL - Insert - cuja sintaxe é a seguinte :
INSERT NomeDaTabela ( coluna1, coluna2... ) VALUES ( valor1, valor2... )
Exemplo :
INSERT Teste ( Nome , Endereco, Telefone ) VALUES ( 'Macoratti', 'Rua Teste 100', '11-1234-7852 )
As etapas necessárias para que o comando SQL INSERT seja executado em uma página ASP.NET são:
SQL Server |
<%@ Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.SqlClient" %> <% Dim conexao As SqlConnection Dim comando As SqlCommand conexao = New SqlConnection("server=localhost;uid=sa;pwd=senha;database=TesteDB") conexao.Open() comando = New SqlCommand( "Insert Teste ( coluna ) Values ( 'Teste' )", conexao ) comando.ExecuteNonQuery() conexao.Close() %> |
-A classe SqlCommand é inicializada com dois parâmetros : o comando que vai executar e a conexão.
-A cláusula Insert vai incluir um novo registro na tabela Teste do banco de dados TesteDB
- O comando é executado invocando o método ExecuteNonQuery da classe SqlCommand. Este método é usado para enviar para executar um comando SQL que não retorna registros.
Access |
<%@ Import
Namespace="System.Data" %> <%@ Import NameSpace="System.Data.OleDb" %> <% Dim conexao As OleDbConnection Dim myCommand As OleDbCommand conexao = New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASource=c:\Teste.mdb" ) conexao.Open() comando = New OleDbCommand( "Insert INTO Teste ( Nome ) Values ( 'Macoratti' )", conexao ) comando.ExecuteNonQuery() conexao.Close() %> |
Nota: Se a string que você estiver incluindo na tabela contiver uma apóstrofe interna (') você deve tomar cuidado. Se você usar a sintaxe padrão :
INSERT INTO Teste ( Nome ) Values ( 'Macdonald's' )Vai obter um erro por que o apostrofe (') interna de Macdonald's é interpretada como final da string. Para contornar este problema devemos usar dois sinais de apostrofes. Assim :
INSERT INTO Teste ( Nome ) Values ( 'Macdonald''s' )
Para atualizar os registros existente em uma tabela de um banco de dados usamos o comando SQL UPDATE. A sintaxe é a seguinte :
UPDATE tabela SET coluna1 = valor1, coluna2 = valor2... WHERE criterio
Exemplo :
UPDATE Teste SET Nome = 'Macoratti' WHERE Nome = 'Jose'
Para executar um comando UPDATE em uma página ASP.NET temos os seguintes passos:
SQL Server |
<%@ Import
Namespace="System.Data" %> <%@ Import NameSpace="System.Data.SqlClient" %> <% Dim conexao As SqlConnection Dim comando As SqlCommand conexao = New SqlConnection( "server=localhost;uid=sa;pwd=senha;database=TesteDB" ) conexao.Open() comando = New SqlCommand( "UPDATE Teste SET Nome='Macoratti' WHERE Nome='Jose'", conexao ) comando.ExecuteNonQuery() conexao.Close() %> |
Access |
<%@ Import
Namespace="System.Data" %> <%@ Import NameSpace="System.Data.OleDb" %> <% Dim conexao As OleDbConnection Dim comando As OleDbCommand conexao = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASource=c:\teste.mdb" ) conexao.Open() comando = New OleDbCommand( "UPDATE Teste SET Nome='Macoratti' WHERE Nome = 'Jose'", conexao ) comando.ExecuteNonQuery() conexao.Close %> |
- O comando UPDATE pode afetar mais de um registro. Quando você executa um comando Update ele altera cada registro que satisfaz a cláusula Where.
- Podemos determinar o número de registros afetados por um comando Update em uma página ASP.NET capturando o valor retornado pelo método ExecuteNonQuery(). Basta incluir o código abaixo :
registrosAfetados
= comando.ExecuteNonQuery()
Response.Write( "O comando UPDATE modificou " &
registrosAfetados.toString() & " registros!" )
Para excluir dados de uma tabela de um banco de dados usamos o comando DELETE cuja sintaxe básica é :
DELETE tabela WHERE criterio
Exemplo:
DELETE Teste WHERE Nome = 'Macoratti'
SQL Server |
<%@ Import
Namespace="System.Data" %> <%@ Import NameSpace="System.Data.SqlClient" %> <% Dim conexao As SqlConnection Dim comando As SqlCommand conexao = New SqlConnection( "server=localhost;uid=sa; pwd=senha;database=TesteDB" ) conexao.Open() comando = New SqlCommand( "DELETE Teste WHERE Nome='Macoratti'", conexao ) comando.ExecuteNonQuery() conexao.Close() %> |
Access |
<%@ Import
Namespace="System.Data" %> <%@ Import NameSpace="System.Data.OleDb" %> <% Dim conexao As OleDbConnection Dim comando As OleDbCommand conexao = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASource=c:\testeDB.mdb" ) conexao.Open() comando = New OleDbCommand("DELETE FROM Teste WHERE Nome='Macoratti'", conexao ) comando.ExecuteNonQuery() conexao.Close() %> |
- No Access usamos DELETE FROM ao invés de DELETE usado no SQL Server.
- O comando DELETE excluir todos os registros que obedeçam a condição definida na cláusula Where.
- Podemos determinar o número de registros afetados por um comando Delete em uma página ASP.NET capturando o valor retornado pelo método ExecuteNonQuery(). Basta incluir o código abaixo :
registrosAfetados
= comando.ExecuteNonQuery()
Response.Write( "O comando DELETE excluiu " &
registrosAfetados.toString() & " registros !" )
E , é isto ai ... Até o próximo artigo...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: