O ADO.NET é um conjunto classes pertencente à plataforma .NET que tem por função prover acesso a dados aos programas escritos em linguagens da plataforma (C#, VB.NET, Cobol, etc).

Seus principais namespaces são:

  • System.Data.Common - classes e interfaces genéricas de acesso a dados;
  • System.Data - classes que não são específicas de um determinado software gerenciador de banco de dados (SGBD), como o SQL Server, Oracle ou MySQL;
  • System.Data.SqlClient - classes específicas para acesso ao Microsoft SQL Server 7.0, 2000 e 2005;
  • System.Data.OleDb - classes específicas para acesso a qualquer fonte OLE DB, como Access e versões mais antigas do Microsoft SQL Server (como a 6.5);
  • System.Data.OracleClient - classes específicas para acesso ao Oracle Database Server;
  • System.Data.SqlTypes - classes que representam os datatypes do Microsoft SQL Server 2005;
  • System.Data.Sql - classes para uso em integração com CLR.

Quanto à forma de acesso aos dados temos dois modelos:

  • conectado - uma conexão (vínculo do programa com o SGBD) é mantida ativa enquanto trabalhamos (percorrendo os itens para impressão na tela, por exemplo). Esse modelo é indicado para tarefas como preencher um ComboBox (DropDownList no ASP.NET); 
  • desconectado - uma conexão é aberta, os dados são pesquisados e depois a conexão é fechada. Somente nesse momento é que se manipulam os dados. É indicado para preencher um DataGridView (GridView no ASP.NET) usando um DataSource.

O ADO.NET é composto por dois grupos de classes:

  • DATASET - classes que recebem dados de um SGBD ou de arquivos XML;
  • DATA PROVIDERS - classes que provêem acesso conectado ou desconectado ao SGBD;

As principais classes representadas no esquema acima são:

  • xxxConnection - Estabelece uma conexão entre o programa e o SGBD. Pode usar uma Transaction;
  • xxxTransaction - Garante que um conjunto de operações de manutenção nos dados do SGBD seja feito de forma completa. Ou todas as operações são feitas ou (em caso de erro) são desfeitas;
  • xxxCommand - Executa um comando (como insert, update, delete ou select) - necessita de uma conexão aberta. Possui uma coleção Parameters;
  • xxxParameter - Um parâmetro (valor) passado para o comando;
  • xxxDataAdapter - Seleciona dados no SGBD (usando o SelectCommand) e preenche um DataReader ou um DataSet ou atualiza o banco de dados a partir de um DataSet (usando o InsertCommand, UpdateCommand ou o DeleteCommand - o que for aplicável);
  • SelectCommand - Comando de seleção de dados;
  • InsertCommand - Comando de inserção;
  • UpdateCommand - Comando de atualização dos dados;
  • DeleteCommand - Comando de exclusão;
  • xxxDataReader - Armazena temporariamente os dados retornados por um DataAdapter ou por um Command; 
  • DataSet - É a classe que mantém os dados lidos de um XML ou de um SGBD (usando de um DataAdapter) em memória. Possui uma coleção de DataTables que podem ser relacionadas através de regras definidas na coleção  de DataRelations;
  • DataTable - Representa o resultado de uma consulta. Possui uma coleção de DataColumns e uma coleção de DataRows. Uma tabela pode possuir Constraints.
  • DataColumn - Cada coluna (campo) retornada na consulta;
  • DataRow - Uma linha retornada na consulta, também conhecida por registro;
  • Constraint - Uma regra aplicada a um campo de tabela;
  • DataRelation - Relaciona os registros de tabelas diferentes.

OBS.: iniciei com xxx as classes específicas de cada SGBD, por exemplo a xxxConnection na realidade é a SqlConnection, a OleDbConnection ou a MySQLConnection, conforme a nossa necessidade.