Introdução
ADO.NET é o termo genérico para os módulos de manipulação de banco de dados da plataforma .NET.
Com ele interagimos com bancos de dados para executar operações básicas como inserir, excluir, alterar e consultar registros. Também é possível rodar instruções SQL, invocar funções SQL e executar stored procedures.
Quase todos os grandes sistemas empresariais dependem de bancos de dados. Quando você precisa armazenar dados de forma persistente e realizar consultas com bom desempenho, é necessário usar um banco de dados.
No núcleo do ADO.NET temos um conjunto de objetos que já encapsulam os métodos para operações com banco de dados:
- Connection: Estabelece a conexão com o banco de dados
- Command: Executa comandos relacionados ao SQL
- DataSet: Conjunto de dados mantido na memória, uma abstração do banco de dados. Trabalhar com um DataSet é parecido com trabalhar com um banco de dados offline. Ele contém DataTable (tabela de dados) e DataRow (um registro individual da tabela).
- DataReader: Leitor de dados somente leitura com avanço sequencial
- DataAdapter: Adaptador de dados
Apenas dominando o ADO.NET você consegue criar sistemas empresariais completos. Aplicativos como sites também contam muito com bancos de dados, por isso vale a pena estudar com atenção.
Frameworks ORM como EF, iBatis, NHibernate e Linq to Entities são construídos em cima do ADO.NET. Você também pode criar seu próprio framework ORM usando o ADO.NET como base.
Conexão com banco de dados
O objeto Connection cria o vínculo entre o programa e o banco de dados, servindo como ponte para todas as operações no banco.
O .NET disponibiliza a classe SqlConnection para trabalhar com conexões. Ela pertence ao namespace System.Data.SqlClient e faz parte do assembly System.Data.dll.
A maioria dos tipos para interagir com banco de dados estão encapsulados dentro dessa dll.
Antes de abrir uma conexão, você precisa preparar a cadeia de conexão do banco de dados. Essa cadeia é passada na hora de instanciar o objeto SqlConnection.
SqlConnection conn = new SqlConnection(connectionString);Code language: JavaScript (javascript)
A cadeia de conexão é basicamente uma string comum, armazenada no tipo string.
Exemplos de cadeia de conexão para dois modos de autenticação
- Acesso com conta SA (autenticação do SQL Server)
"Data Source=.;Initial Catalog=NomeDoBanco;User ID=sa;pwd=Senha;"Code language: JSON / JSON with Comments (json)
- Acesso com autenticação do Windows
Data Source=.;Initial Catalog=NomeDoBanco;Integrated Security=TrueCode language: PHP (php)
A cadeia de conexão é formada por vários itens de configuração separados por ponto‑e‑vírgula em inglês, seguindo o formato chave=valor.
Explicação dos parâmetros:
Data Source: Endereço do servidor de banco de dados. Para bancos locais use.,localhostou127.0.0.1; para servidores remotos informe o IP ou domínio.Initial Catalog: Nome do banco de dados de destinoUser ID: Conta de login do banco de dadospwd: Senha de login do banco de dados
Observação:
User IDepwdnão são campos obrigatórios. Ao usar o modo de autenticação Windows, definaIntegrated Security=Truepara habilitar a segurança integrada, não sendo necessário informar usuário e senha.
Como conectar‑se ao banco de dados em C#
private void button1_Click(object sender, EventArgs e)
{
string connectionString = "Data Source=.;Initial Catalog=db;User ID=sa;pwd=123321;";
// Instancia o objeto de conexão dentro do bloco using. Recursos são liberados automaticamente no fim do bloco, não precisa chamar Close() manualmente
using (SqlConnection conn = new SqlConnection(connectionString))
{
// Abre a conexão com o banco de dados
conn.Open();
// Coloque seu código de operações com banco de dados aqui
}
}
Observações
conn.Open(): Abre a conexão com o banco de dados. É preciso chamar esse método para estabelecer efetivamente a conexão de rede.- Vantagem da sintaxe
using: ao sair do bloco using, os recursos são liberados e a conexão é fechada automaticamente, evitando vazamento de conexões. - Se não usar o using, após finalizar as operações você deve chamar manualmente
conn.Close()para fechar a conexão.
Outras formas de uso
//conn.Open(); // Abrir conexão
//conn.Close(); // Fechar conexão manualmente
//conn.ConnectionString = connectionString; // Atribuir cadeia de conexão dinamicamente
//conn.ConnectionString = ""; // Limpar cadeia de conexão
Introdução e conexão