Acesso Banco Dados

36
Plataforma .Net C#.NET C++.NET Perl.NET VB.NET ADO.NET: Data and XML Base Class Library Common Language Runtime Visual Studio .NET XML Web Services User Interface ASP.NET

description

C# e BD

Transcript of Acesso Banco Dados

  • 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: