retrieve and update data in database

Description

70-483 C# Flashcards on retrieve and update data in database, created by Thiago Russo on 04/06/2017.
Thiago Russo
Flashcards by Thiago Russo, updated more than 1 year ago
Thiago Russo
Created by Thiago Russo almost 7 years ago
5
0

Resource summary

Question Answer
exemplo de estrutura de tabela e comando SQL para criação de tabela
exemplo de como recurperar (select) dados
como o SqlDataReader funciona? A SqlDataReader é um stream de linhas que executa "somente pra frente". Vc ñ pode ir para trás, enquanto está lendo; só para a frente. Vc pode acessar as colunas de uma linha resultante tanto pelo índice e pelo nome. O SqlDataReader oferece vários métodos q podem mapear o valor de uma coluna para o tipo de CLR correspondente. Ex: vc pode chamar métodos como GetInt32 (int index), GetGuid (int index), GetString (int index), e assim por diante
Ao executar uma consulta, vc tb pode executar em lote várias instruções SQL em conjunto. O SQL-DataReader retornado contém vários conjuntos de resultados. Vc pode avançar para a próxima definida chamando NextResult ou NextResultAsync no seu objeto SqlDataReader resultado Exemplo de como implementar...
update rows
Usando parâmetros Problema de injeção de SQL Como uma consulta SQL é nada + do que uma string simples, vc pode ser tentado a concatenar várias strings em conjunto para criar sua consulta. No entanto, fique ciente de que este é um enorme risco de segurança. Ex: digamos que vc tem um formulário no qual as pessoas podem preencher seus nomes que você vai inserir na tabela Pessoas. Sua consulta será parecido com este: INSERT INTO Pessoas VALUES ('John', 'Doe', null) Agora, vc pode ler os valores que um usuário entra e, em seguida, construir manualmente essa string. Mas o que aconteceria se um usuário digita o seguinte para um nome do meio? '); DELETE FROM Pessoas; -- Depois de executar essa consulta, todos os dados na sua tabela As pessoas seriam excluídos. Esta falha de segurança é conhecida como injeção de SQL.
Como fazer para proteger sua consulta de injeção de SQL?
Usando transações O que são transações? Quando se trabalha com um banco de dados, as coisas podem dar errado. Talvez você está executando várias consultas que devem ser agrupadas. Se a última falhar, os anteriores já são executadas, e de repente os seus dados pode estar corrompidos. Utilizar transações, resolve esse problema.
ACID Devido a isso, .NET ajuda vc com transações. Uma transação tem quatro propriedades fundamentais que são referidos como ACID: ■ Atomicity (Atomicidade): Todas as operações são agrupadas, como uma operação atômica. Se uma falhar, todas falham. ■ Consistency (Consistência): Transações sempre conduzem o BD para um estado válido. ■ Isolation (Isolamento): Transações pode operar de forma independente uma da outra. Várias transações concorrentes não irão influenciar o outra. Será como se fossem executadas em série. ■ Durability (Durabilidade) O resultado de uma transação confirmada é sempre armazenado permanentemente, mesmo se o banco de dados trava imediatamente a seguir.
exemplo utilizando TransactScope
E se uma exception ocorrer dentro de uma TransactScope? E se nada der errado? Se ocorrer uma exceção dentro do TransactionScope, toda a transação será revertida. Se nada der errado, você usa TransactionScope.Complete para completar a transação. É importante usar o TransactionScope dentro de uma instrução using para que ele seja automaticamente eliminados quando já não é necessário.
Vc pode definir o comportamento do TransactionScope com TransactionScopeOption Um TransactionScope tb pode ser construída com um enum TransactionScopeOption. Ao utilizar este enum, vc pode definir o comportamento do TransactionScope. Um TransactionScope pode ser construída com três opções: ■ Required: Junta a um ambiente de transação ou criar um novo se ele não existir. Se houver um ambiente de transação, essa transação controla qdo a transação for concluída. Esse é o escopo padrão. ■ RequiresNew: Inicia uma nova transação. ■ Suppress (Suprimir): Não participa de qualquer transação.
Gerenciamento de transação utlizando TransactionScope e transações distribuídas Ao usar TransactionScope, o .NET gerencia automaticamente a transação para vc. Se sua transação usa conexões aninhadas, vários BD, ou vários tipos de recursos, sua transação é promovida a uma transação distribuída. A promoção de uma transação distribuída pode ter um grande impacto no desempenho se não é necessário. Se possível, tente evitar transações distribuídas. Se vc precisar deles, .NET Framework irá gerenciá-las para vc.
Usando um Object Relational Mapper (ORM) O que é incompatibilidade de impedância objeto-relacional ? Um dos problemas com um banco de dados relacional é que é de natureza diferente da estrutura orientada a objeto que você deseja usar em suas aplicações. Você usa objetos que têm relação com outros objetos ou que herdam a partir deles. O banco de dados utiliza tabelas com colunas e chaves estrangeiras para outras tabelas. Isto é o que é chamado de incompatibilidade de impedância objeto-relacional (object-relacional impedance mismatch).
Microsoft Entity Framework Este é o lugar onde um softwade de Objeto Relational Mapping (ORM) entra em jogo. Um desses ORM é o open source da Microsoft Entity Framework, o que diminui o peso do trabalho tedioso de mapear seus objetos, a construção de queries, e manter o controle de todas as mudanças. O EF pode ser usado com algumas abordagens diferentes: ■ Database First: vc deseja mapear um BD existente para a sua estrutura de objeto. ■ Model First: vc quer projetar seu modelo de objeto com um designer gráfico e, em seguida, criar um BD que o suporta. ■ Code First: Você cria seu modelo de objeto no código e, em seguida, gerar um BD que pode armazenar seus dados.
desempenho X velocidade de desenvolvimento Usar um ORM é um compromisso entre desempenho e velocidade de desenvolvimento. Como o EF usa Reflection para mapear a partir dos resultados da consulta SQL para objetos, o que é sempre mais lento do que fazê-lo com a mão. No entanto, usando o Entity Framework irá aumentar a sua velocidade de desenvolvimento imensamente. Ele permite que você crie seu aplicativo rapidamente, priorizando as partes que precisam de um melhor desempenho. O Entity Framework é tipicamente bom o suficiente para a maioria das situações. Se não, você pode adicionar um procedimento armazenado (stored procedures) simples para as consultas que são problemáticas. *hoje, micro-orm é mais indicado do que sp
ex de mapeamento da claase Person utilizando code first
ex simples persistindo e consultado dados com EF (De acordo com o mapeamento acima)
Show full summary Hide full summary

Similar

Porova teórica C# mod l
Cursos Professor Jonatã
Linguagem C#
Alex Araujo Furado
Prova teorica C# mo ll
Cursos Professor Jonatã
Entity framework - code first
José Fernandes
Flashcard Módulo 1 - XAMARIN LATINO AMERICA
Marcone Barbosa
Entity framework
José Fernandes
C# and ASP.NET
Kalebi Fiorentini
Linguagens de programação
Rodrigo Barbosa7452
Conceitos do ASP.NET CORE (Incompleto)
José Fernandes Rezende Neto
Dates and times .NET
Felipe Couto Viola
Fluxo Game UC 8
Lucas Coluzzo