Plataforma .NetC#.NETC++.NETPerl.NETVB.NETADO.NET: Data and XMLBase Class LibraryCommon Language RuntimeVisual Studio .NETXML Web ServicesUser InterfaceASP.NET
Acesso a DadosIntroduoODBC (Open Database Connectivity)Interoperabilidade para vrios sistemas gerenciadores de banco de dados (DBMS).API largamente aceita.Usa SQL como linguagem de acesso a dados.DAO (Data Access Objects)Interface de programao para bancos de dados JET/ISAM.Usa automao (ActiveX, OLE automation).RDO (Remote Data Objects)Verso mais sofisticada e otimizada do ODBC.Desenvolvido especialmente para bancos de dados cliente/servidor.
Acesso a DadosIntroduoOLE DBAmplo acesso a dados, relacionais e outros.No restrito SQL para a recuperao de dadosPode utilizar drives ODBC.Interface de baixo-nvel (C++).ADO (ActiveX Data Objects)Interface simples, orientada a objetos e baseada em componentes.Fornece um modelo de programao para o OLE DB acessvel fora do C++.
ADO TradicionalEstrutura de AcessoADOODBC ProviderSimple ProviderNative ProviderOLE DB ProviderODBCODBC DriverText FileDatabaseDatabaseOLE DB ProviderMainframeOLE DBAplicao
ADO TradicionalCaractersticasADO foi projetado atravs de um modelo conectado, firmemente acoplado.Apropriado para arquiteturas cliente/servidor.Principalmente relacional (XML hierrquico).Porm, o projeto dos objetos no foi bem definido:H muitas formas para se fazer a mesma coisa.Os objetos tentam fazer coisas demais.No foi originalmente projetado para trabalhar em ambiente distribudo, de mltiplas camadas.
ADO.NETMetas do ADO.NETProjeto mais bem acabado.Altamente escalvel atravs de um modelo desconectado e robusto.Rico suporte a XML (hierrquico alm do relacional).Acesso de dados sobre HTTP.Mantm o modelo de programao do ADO.Mantm o ADO disponvel via interoperabilidade .NET vs. COM.
ADO.NETProvedoresCombina ADO e OLEDB em uma s camada.Cada provedor contm um conjunto de classes que implementa interfaces comuns.
SQL Managed ProviderSQL Server DatabaseADO.NETProvedores GerenciveisADO.NETADO Managed ProviderOLE DB ProviderDatabaseAplicao
ADO.NETEstilos de Acesso a DadosSomente-para-frente, somente-leitura:A aplicao envia uma consulta e depois l e processa os resultados.Cursor tipo mangueira ou duto de comunicaoObjeto DataReaderDesconectado:A aplicao envia uma consulta e depois recupera e armazena os resultados para processamento.Minimiza tempo conectado ao banco de dados.Objeto DataSet
ADO.NETLigaes de Dados (Data Binding)Componente chave de formulrios Web.Uso flexvel e fcil:Liga ou anexa uma propriedade de um controle a uma informao em qualquer tipo de fonte de dados.Fornece controle sobre como os dados vm e voltam. Controles simples para exibir um nico valor.Controles complexos para exibir estruturas de dados.
Classes ADO.NET IDbConnection InterfaceCria uma conexo nica com uma fonte de dados (data source).Implementada pelas classes SqlDbConnection e OleDbConnectionFuncionalidade:Abre e fecha conexesInicia transaesA classe IDbTransaction fornece mtodos Commit e RollbackUsada em conjunto com objetos IDbCommand e IDataAdapter.Propriedades adicionais, mtodos e colees dependem do provedor de dados.
Classes ADO.NET IDbCommand InterfaceRepresenta um comando a ser enviado para a fonte de dados (data source).Normalmente, mas no necessariamente em SQL.Implementado pelas classes OleDbCommand e SqlCommand.Funcionalidade:Define o comando a ser executadoExecuta o comandoPassa e recupera parmetrosCria uma verso compilada do comandoExecuteReader retorna linhasExecuteNonQuery no retorna nadaExecuteScalar retorna um nico valorPropriedades adicionais, mtodos e colees dependem do provedor de dados.
Classes ADO.NET IDataReader InterfaceSomente para frente (forward-only), somente leitura (read-only) acesso tipo mangueira ou duto a uma srie de dados.Implementado pelas classes SqlDataReader e OleDbDataReader.Criado atravs do mtodo ExecuteReader da classe IDbCommand.Operaes associadas com o objeto IDbConnection so desabilitadas at que o leitor seja fechado.
Classes ADO.NET DataReader Exemplostring sConnString = Provider=SQLOLEDB.1; + User ID=sa;Initial Catalog=MeuBanco; + Data Source=MeuServidor;OleDbConnection sqlCon = new OleDbConnection(sConnString);sqlCon.Open();string sQueryString = SELECT NomeCliente FROM Cliente;OleDbCommand sqlCmd = new OleDbCommand(sQueryString, sqlCcon);OleDbDataReader sqlReader = sqlCmd.ExecuteReader();while (sqlReader.Read()) { Console.WriteLine(sqlReader.GetString(0));}sqlReader.Close();sqlCon.Close();
Classes ADO.NET System.Data.OleDb NamespaceProvedor gerenciado para uso com provedores de dados OLEDBSQLOLEDB (SQL Server) usa System.Data.SQLMSDAORA (Oracle)JOLT (Jet)OLEDB para provedores ODBCClasses OleDbConnection, OleDbCommand e OleDbDataReaderClasses para tratamento de errosClasses para pool de conexes
Classes ADO.NET System.Data.SqlClient NamespaceProvedor gerenciado nativo para o SQL ServerConstrudo com TDS (Tabular Data Stream) para alto desempenho com o SQL ServerClasses SqlConnection, SqlCommand e SqlDataReader.Classes para :Tratamento de errosPool de conexes (implicitamente habilitadas por definio)System.Data.SqlTypes fornece classes para tipos de dados nativos do SQL Server.
Classes ADO.NET System.Data NamespaceContm os principais classes do ADO.NET.O DataSet desconectado sua classe central.Suporta todos os tipos de aplicativos:InternetASP.NET (C#, VB.NET e JavaScript)XMLWindows C#VB.NET
Classes ADO.NET System.Data Namespace (cont.)Contm classes usadas por ou derivadas de provedores gerenciados:IDbConnectionIDbCommandIDbDataReader
Classes ADO.NET DataSetUma coleo de tabelasNo possui conhecimento da fonte de dadosMantm todos os relacionamentos entre as tabelasModelo de programao rico (possui objetos para tabelas, colunas, relacionamentos, e assim por diante)Lembra-se do estado original e atual dos dadosPode modificar dinamicamente dados e metadadosO formato para serializao nativo o XMLLocalizada no pacote System.Data
Classes ADO.NET DataSetDataSetDataTableDataRelationDataRowDataColumn
Classes ADO.NET DataTableObjeto na memria representando uma tabelaColunasLinhasEsquema definido por coleo de colunasA integridade de dados provida atravs de objetos ConstraintEventos pblicos:Modificar / excluir linhas (registros)Modificar colunas
Classes ADO.NET DataColumnBloco de construo fundamental de um esquema DataTable (contido na coleo de colunas).Define que tipo de dados pode ser aceito (via propriedade DataType).Outras propriedades importantes incluem AllowNull, Unique, e ReadOnly.Pode conter Constraints (coleo na DataTable).Pode conter Relaes (coleo no DataSet).
Classes ADO.NET DataRowRepresenta dados em uma DataTable (contida em coleo de linhas).Segue o esquema definido por objetos DataColumns.Possui propriedades para determinar o estado das linhas (por exemplo, nova, alterada, excluda, e assim por diante).Todas as adies e modificaes so atualizadas (committed) atravs do mtodo AcceptChanges do objeto DataTable.
Classes ADO.NET DataRelationRelaciona duas DataTables via DataColumns.O valor DataType de ambas DataColumns deve ser idntico.Atualizaes podem ser cascateadas para DataTables filhas.As modificaes que invalidam a relao no so permitidas.
Classes ADO.NET IDataAdapter InterfacePopula ou envia atualizaes para um DataSetImplementado por OleDbDataAdapter e SqlDataAdapter.No conectado.Representa uma abordagem assncrona.Um super conjunto de um objeto command.Contm quatro objetos de comandos padro para: Select, Insert, Update, e Delete.
Classes ADO.NET DataSet Exemplostring sConnString = Persist Security Info=False; + User ID=sa;Initial Catalog=Northwind; + Data Source=MEUSERVIDOR;SqlConnection sqlCon = new SqlConnection(sConnString);sqlCon.Open();string sqlString = SELECT NomeEmpresa FROM Cliente;SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();DataSet sqlDataSet = new DataSet();sqlDataAdapter.SelectCommand = new SqlCommand(sqlString, sqlCon);sqlDataAdapter.Fill(sqlDataSet);slqCon.Close();
Classes ADO.NET Criando um DataSet via CdigoCriao do DataSetDefinio das tabelasDataSet dataset = new DataSet();dataset.DataSetName = Autores;
DataTable autor = new DataTable(Autor);DataTable livro = new DataTable(Livro);
Classes ADO.NET Criando um DataSet via CdigoDefinio das colunas Definio das chavesDataColumn id = autor.Columns.Add("ID", typeof(Int32));id.AutoIncrement = true;autor.PrimaryKey = new DataColumn[] {id};
DataColumn nome = new autor.Columns.Add("Nome",typeof(String));
DataColumn isbn = livro.Columns.Add("ISBN", typeof(String));livro.PrimaryKey = new DataColumn[] {isbn};
DataColumn titulo =livro.Columns.Add("Titulo",typeof(String));DataColumn idautor=livro.Columns.Add(idAutor,typeof(Int32));DataColumn[] foreignkey = new DataColumn[] {idautor};
Classes ADO.NET Criando um DataSet via CdigoAdio das tabelas no DataSetdataset.Tables.Add (autor);dataset.Tables.Add (livro);
Classes ADO.NET Criando um DataSet via CdigoAdio de dados e gravao do DataSetDataRow vidal = autor.NewRow();vidal["Nome"] = Antonio Geraldo da Rocha Vidal";autor.Rows.Add(vidal);
DataRelation autorlivro = new DataRelation(AutorLivro", autor.PrimaryKey, foreignkey);dataset.Relations.Add(autorlivro);
DataRow clipper = livro.NewRow();clipper[idAutor"] = vidal["ID"];clipper["ISBN"] = "1000-XYZ";clipper["Titulo"] = Clipper 5.0";livro.Rows.Add(clipper);
dataset.AcceptChanges();
Classes ADO.NET DataSets TipadosDataSet tipados:Derivados da classe DataSetUsam esquemas XML para gerar novas classesTabelas, colunas, etc. compiladas em novas classes DataSet no tipados: No possuem esquema de construo automtico Tabelas, colunas, etc. so expostas como coleesDataSet.Customers.FirstNameDataSet.Tables[Customers].Rows[0][FirstName]
Classes ADO.NET Erros e ExceesClasse ErrorContm informaes sobre um erro ou advertncia retornada por uma fonte de dados.Criada e administrada pelas classes ErrorsClasse ErrorsContm todos os erros gerados por um adapterCriada pela classe ExceptionClasse ExceptionCriada sempre que um erro aconteceSempre contm pelo menos uma instncia de Erro
Classes ADO.NET Exemplo de Erros e Exceestry { DataTable minhaTabela = new DataTable(); minhaTabela.Columns.Add(minhaColuna); minhaTable.Columns.Add(minhaColuna); // Oops!!}catch (DataException myException) { Console.WriteLine ("Mensagem: " + minhaException.Message + "\n" + Fonte: " + minhaException.Source + "\n" + Rastreamento: " + minhaException.StackTrace + "\n");}
ApndiceADO vs. ADO.NETADO uma camada de automao mais lenta sobre OLE DB para uso com Visual Basic, etc.ADO.NET fornece acesso direto e rpido a dados a partir de qualquer linguagem.ADO.NET essencialmente fundiu OLE DB e ADO em uma nica camada.
ApndiceADO Tradicional vs. ADO.NET
CaractersticaADOADO.NETRepresentao de dados residentes na memriaUsa RecordSet, que pode conter apenas uma tabelaUsa o DataSet, que pode conter uma ou mais tabelas representadas por DataTablesRelacionamento entre mltiplas tabelasRequer executar JOINs com tabelasRealiza atravs do objeto DataRelationAcesso aos dadosPercorre seqencialmente as linhas de um RecordSetUma o paradigma de navegao para acesso no seqncialAcesso disconectadoFornecido pelo RecordSet mas tipicamente suporta o acesso conectadoComunica-se atravs de chamadas padronizadas com o DataAdapter
ApndiceADO Tradicional vs. ADO.NET
CaractersticaADOADO.NETProgramaoUsa o objeto Connection para transmitir comandosUsa programao baseada em documentos XMLCompartilhamento de dados desconectados entre camadas e componentesUsa objetos COM para transmitir um RecordSet desconectadoTransmite um DataSet atravs de um arquivo XMLTransmisso de dados atravs de FirewallsProblemtica pois os firewalls so tipicamente configurados para no permitir acesso a nvel de sistemaSuportada atravs de objetos DataSet que usam arquivos XML, que podem passar atravs firewallsEscalabilidadeManuteno de conexes com bancos de dados ativas por longos perodos.Acesso desconectado a bancos de dados sem exigir bloqueios de dados.
Banco de Dados - Prof. Antonio Geraldo da Rocha VidalFEA/USP - EAD-5881 - Tecnologia de Informtica*The third main style is connected, scrollable cursor. ADO.NET does not currently support this style, though it may be supported in a future version. This can be implemented by using ADO.Banco de Dados - Prof. Antonio Geraldo da Rocha VidalFEA/USP - EAD-5881 - Tecnologia de Informtica*We will cover this when we discuss ASP.NET and Web Forms.Banco de Dados - Prof. Antonio Geraldo da Rocha VidalFEA/USP - EAD-5881 - Tecnologia de Informtica*Very similar to ADO counterpart.
Database access protocols tend to be chatty.Banco de Dados - Prof. Antonio Geraldo da Rocha VidalFEA/USP - EAD-5881 - Tecnologia de Informtica*Very similar to ADO counterpart.Use ExecuteNonQuery whenever possible.
Banco de Dados - Prof. Antonio Geraldo da Rocha VidalFEA/USP - EAD-5881 - Tecnologia de Informtica*This is a simplified view of the containment relationships in a DataSet. There are actually many other collections and types of objects involved.Banco de Dados - Prof. Antonio Geraldo da Rocha VidalFEA/USP - EAD-5881 - Tecnologia de Informtica*KEY MESSAGE:
SLIDE BUILDS: NoneSLIDE SCRIPT:
SLIDE TRANSISTION:
ADDITIONAL INFORMATION FOR PRESENTER:
Banco de Dados - Prof. Antonio Geraldo da Rocha VidalFEA/USP - EAD-5881 - Tecnologia de Informtica*KEY MESSAGE:
SLIDE BUILDS: NoneSLIDE SCRIPT:
SLIDE TRANSISTION:
ADDITIONAL INFORMATION FOR PRESENTER:
Top Related