Você está na página 1de 14

/LQJXDJHPGH3URJUDPDomR&RPHUFLDO

Autoria: Douglas Fugita de Oliveira Cesar

Tema 02
Conexão a Sistemas de Banco de Dados: Utilização do ADO .Net. Objetos
Connection, DataReader e DataAdapter. Data Form Wizard: Vinculando
Dados no Windows Forms e Web Forms. Comandos ASP.NET

7HPD
Conexão a Sistemas de Banco de Dados: Utilização do ADO .Net. Objetos Connection, DataReader e DataAdapter.
Data Form Wizard: Vinculando Dados no Windows Forms e Web Forms. Comandos ASP.NET
Autoria: Douglas Fugita de Oliveira Cesar
Como citar esse documento:
CEZAR, Douglas Fugita de Oliveira. Linguagem de Programação Comercial: Conexão a Sistemas de Banco de Dados: Utilização do ADO .Net.
Objetos Connection, DataReader e DataAdapter. Data Form Wizard: Vinculando Dados no Windows Forms e Web Forms. Comandos ASP.NET.
Valinhos: Anhanguera Educacional, 2014.

Índice

CONVITEÀLEITURA PORDENTRODOTEMA
Pág. 3 Pág. 3

ACOMPANHENAWEB
Pág. 21 Pág. 22

Pág. 24 Pág. 24

Pág. 25 Pág. 25

‹ $QKDQJXHUD (GXFDFLRQDO 3URLELGD D UHSURGXomR ¿QDO RX SDUFLDO SRU TXDOTXHU PHLR GH LPSUHVVmR HP IRUPD LGrQWLFD UHVXPLGD RX PRGL¿FDGD HP OtQJXD
SRUWXJXHVDRXTXDOTXHURXWURLGLRPD
CONVITEÀLEITURA
Este Caderno de Atividades foi elaborado com base no livro Políticas Públicas – Conceitos, esquemas de análise,
casos práticos, do autor Leonardo Secchi, editora Cengage Learning, 2011. Livro-Texto 405.

Neste caderno você terá o conceito básico de um dos principais recursos do .NET Framework: o ADO.NET.

Essa excelente ferramenta facilita a conexão e o acesso às mais importantes fontes de dados, sejam elas bancos de
dados, arquivos CSV, sejam planilhas eletrônicas etc. Esse grande conjunto de classes pode ser dividido em outros dois
grandes grupos: os provedores de dados e o DataSet com seus DataTables e DataAdapters.

Num primeiro momento, você estudará o modo como deve ser feita uma conexão com uma fonte de dados e as ferramentas
necessárias para que sejam extraídas ou atualizadas as informações contidas nas fontes.

'HSRLVGH¿[DGRHVVHFRQFHLWRYRFrFRPSUHHQGHUiRXVRGR'DWD6HWREMHWRTXHDUPD]HQDQDPHPyULDXPDHVWUXWXUD
similar ao banco de dados, facilitando a manipulação destes pelo desenvolvedor.

PORDENTRODOTEMA
Conexão a Sistemas de Banco de Dados – Utilização do ADO.NET. Objetos Connection,
DataReader e DataAdapter. Data Form Wizard: Vinculando Dados no Windows Forms e Web
Form. Comandos ASP.NET

21(7)UDPHZRUNSRVVXLXPFRQMXQWRGHFODVVHVHVSHFt¿FDVSDUDDPDQLSXODomRGHGDGRVHPEDVHVGHGDGRV
ou arquivos como XML, CSV, etc. Este conjunto é conhecido como ADO.NET, uma versão atualizada do antigo ADO
(ActiveX Data Objects).

PORDENTRODOTEMA
2$'21(7pHQFRQWUDGRQRQDPHVSDFH6\VWHP'DWDHSRVVXLXPDVpULHGHFRQHFWRUHVHVSHFt¿FRVTXHSRVVLELOLWDP
a conexão com diversas bases de dados diferentes. Os principais provedores de dados são:

‡ System.Data.SQLClient: Provedor de dados para SQL Server.

‡ System.Data.OracleClient: Provedor de dados para Oracle.

‡ System.Data.OleDb: Provedor de dados para OLE DB.

‡ System.Data.Odbc: Provedor de dados para conexões ODBC.

&DGDXPGRVSURYHGRUHVSRVVXLFDUDFWHUtVWLFDVHVSHFt¿FDVGHSHQGHQGRGRWLSRGHFRQH[mRDVHUHIHWXDGDYLVWRTXH
eles se conectam com sistemas diferentes. No entanto, do ponto de vista de implementação, todos eles possuem
semelhanças, facilitando assim o uso.

3DUDDFRQH[mRGRSURJUDPDDXPDIRQWHGHGDGRVpXWLOL]DGRRREMHWR&RQQHFWLRQ$VVLPFRPRRVSUy[LPRVREMHWRVTXH
serão abordados neste caderno, este está implementado em todos os provedores disponibilizados pelo namespasce
System.Data.

A única informação necessária para se criar um objeto Connection é uma Connection String (ou String de Conexão).
Essa string possui dados sobre qual tipo de arquivo será lido, onde esse arquivo se encontra, quais opções de segurança
serão utilizadas: usuário, senha etc. Em virtude de cada um dos sistemas ter necessidades diferentes, para cada tipo
diferente de acesso haverá diferentes Strings de Conexão.

Para o caso que pode ser visto na Figura 2.1, será utilizada uma String baseada em OLE DB, para acessar um arquivo
criado no Microsoft Access – o template Northwind. Detalhes para a obtenção desse template podem ser obtidos ao
acessar o link sugerido na seção “Acompanhe na Web”.


PORDENTRODOTEMA
using System;

using System.Windows.Forms;

using System.Data.OleDb;

namespace TADSWinFormApp

public partial class ConexADO : Form

public ConexADO()

InitializeComponent();

private void ConexADO_Load(object sender, EventArgs e)

string strConnString = @”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB\Northwind.


accdb;Persist Security Info=False;”;

OleDbConnection conn = new OleDbConnection(strConnString);


conn.Open();
conn.Close();
}
Este bloco é o
} que representa a
String de Conexão
} abordada no texto.

Figura 2.1 Objeto Connection




PORDENTRODOTEMA
1D)LJXUDDSyVDFULDomRGDLQVWkQFLDGRREMHWR2OH'%&RQQHFWLRQDFRQH[mRIRLDEHUWDFRPRPpWRGR2SHQ H
encerrada pelo método Close(). Por boa prática, toda conexão que for aberta deve ser fechada. Agora que a conexão
foi estabelecida, as operações de manipulação dos dados podem ser realizadas, e isso se dará através do objeto
Command, como mostrado na Figura 2.2.

using System;

using System.Windows.Forms;

using System.Data.OleDb;

namespace TADSWinFormApp

public partial class ConexADO : Form

public ConexADO()

InitializeComponent();

private void ConexADO_Load(object sender, EventArgs e)

string strConnString = @”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB\Northwind.


accdb;Persist Security Info=False;”;

OleDbConnection conn = new OleDbConnection(strConnString);

string query = “SELECT * FROM Funcionários”;

OleDbCommand cmd = new OleDbCommand(query, conn);


PORDENTRODOTEMA
conn.Open();

cmd.ExecuteReader();

conn.Close();

Figura 2.2 Objeto Command

O construtor do objeto Command possui sobrecarga de parâmetros,HDRSomRXWLOL]DGDIRLDGHSDVVDURVSDUkPHWURV


com a query que será executada no banco de dados e o objeto Connection no qual será executado.

(PVHJXLGDIRLLQFOXtGRXPPpWRGR([HFXWH5HDGHU HQWUHDDEHUWXUDHRHQFHUUDPHQWRGDFRQH[mR(VVHPpWRGRVy
funcionará se a conexão do objeto Connection estiver aberta.

Existem três tipos possíveis de métodos de execução:

‡ ExecuteReader(): método para situações nas quais o comando utilizado retorna dados; por exemplo: SELECT.

‡ ExecuteScalar(): método para situações nas quais o retorno será um único valor; por exemplo: SELECT SUM,
SELECT COUNT.

‡ ExecuteNonQuery(): método utilizado quando o comando que será executado não retorna dados; por exemplo:
UPDATE, DELETE. No entanto, este método retornará o número de registros afetados pela execução.

Para aumentar a segurança e evitar ataques do tipo SQL InjectionRREMHWR&RPPDQGSRVVLELOLWDRXVRGHSDUkPHWURV


para situações em que se faz necessária a passagem de valores para a query. O seu uso é demonstrado na Figura 2.3.

PORDENTRODOTEMA
using System;

using System.Windows.Forms;

using System.Data.OleDb;

namespace TADSWinFormApp

public partial class ConexADO : Form

public ConexADO()

InitializeComponent();

private void ConexADO_Load(object sender, EventArgs e)

string strConnString = @”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB\Northwind.


accdb;Persist Security Info=False;”;

VWULQJTXHU\ ³,16(57,172)XQFLRQiULRV ,GHQWL¿FDomR(PSUHVD1RPH6REUHQRPH>(QGHUHoRGH(PDLO@ 


9$/8(6 #LGHQWL¿FDFDR#HPSUHVD#QRPH#VREUHQRPH#HPDLO ´

OleDbConnection conn = new OleDbConnection(strConnString);

OleDbCommand cmd = new OleDbCommand(query, conn);


PORDENTRODOTEMA
FPG3DUDPHWHUV$GG QHZ2OH'E3DUDPHWHU ³#LGHQWL¿FDFDR´2OH'E7\SH,QWHJHU 9DOXH 

cmd.Parameters.Add(new OleDbParameter(“@empresa”, OleDbType.VarChar)).Value = “NorthWind”;

cmd.Parameters.Add(new OleDbParameter(“@nome”, OleDbType.VarChar)).Value = “Douglas”;

cmd.Parameters.Add(new OleDbParameter(“@sobrenome”, OleDbType.VarChar)).Value = “Fugita”;

cmd.Parameters.Add(new OleDbParameter(“@empresa”, OleDbType.VarChar)).Value = “douglas@nortwhindtraders.


com”;

conn.Open();
Este é o exemplo de utilização
cmd.ExecuteNonQuery(); do Command e de como se
Gi D SDVVDJHP GH SDUkPHWURV
conn.Close();
com a demonstração da sintaxe
} completa. sendo apresentados
respectivamente o campo a receber
} informações, o tipo de dado e as
} atribuições.

)LJXUD3DUkPHWURVHPREMHWR&RPPDQG

O ExecuteScalar e o ExecuteNonQuery retornam um único valor, que pode ser armazenado em uma variável numérica.
Já o ExecuteReader retorna dados do tipo DataReader, que também faz parte do ADO.NET.

2'DWD5HDGHUpXPDFODVVHTXHGLVSRQLELOL]DDVLQIRUPDo}HVGHXPDFRQVXOWDDREDQFRGHGDGRVDWUDYpVGHXPÀX[R
de dados, ou seja, os registros serão lidos um a um, sem possibilidade de voltar ao anterior. Um exemplo do uso do Da-
taReader é mostrado na Figura 2.4.

using System;

using System.Windows.Forms;

using System.Data.OleDb;

PORDENTRODOTEMA
namespace TADSWinFormApp

public partial class ConexADO : Form

public ConexADO()

InitializeComponent();

private void ConexADO_Load(object sender, EventArgs e)

string strConnString = @”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB\Northwind.acc-


db;Persist Security Info=False;”;

OleDbConnection conn = new OleDbConnection(strConnString);

string query = “SELECT * FROM Funcionários”;

OleDbCommand cmd = new OleDbCommand(query, conn);

OleDbDataReader reader;

conn.Open();

reader = cmd.ExecuteReader();

while (reader.HasRows)

while (reader.Read())


PORDENTRODOTEMA
{

txbFuncionarios.AppendText(reader.GetString(3)+” - “ + reader.GetString(4) + “\n”);

reader.NextResult();

conn.Close();

Figura 2.4 DataReader e resultado mostrado em um TextBox



PORDENTRODOTEMA
Para trabalhos que não exigem manipulação dos dados, o DataReader é altamente indicado, pois aumenta o desempenho
durante a execução. No entanto, às vezes é necessário que haja manipulação dos dados recuperados de uma base de
dados. Para isso, o ADO.NET implementa uma classe DataSet.

2 'DWD6HW p XPD UHSUHVHQWDomR GH XPD EDVH GH GDGRV TXH p DORFDGD QD PHPyULD H DUPD]HQD XP FRQMXQWR GH
'DWD7DEOHVTXHSRUVXDYH]UHSUHVHQWDPWDEHODVGHQWURGHXPDEDVHGHGDGRVFRPVHXVWLSRVGH¿QLGRVLGHQWL¿FDomR
de chave primária, possibilidade de restringir valores nulos etc.

Um objeto DataTable pode ser utilizado sem depender de um DataSet, e ele pode ser carregado através de um DataReader,
conforme mostrado na Figura 2.5.

using System;

using System.Windows.Forms;

using System.Data.OleDb;

using System.Data;

namespace TADSWinFormApp

public partial class ConexADO : Form

public ConexADO()

InitializeComponent();

private void ConexADO_Load(object sender, EventArgs e)


PORDENTRODOTEMA
string strConnString = @”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB\Northwind.
accdb;Persist Security Info=False;”;

OleDbConnection conn = new OleDbConnection(strConnString);

string query = “SELECT * FROM Funcionários”;

OleDbCommand cmd = new OleDbCommand(query, conn);

OleDbDataReader reader;

DataTable dtFuncionarios = new DataTable();

conn.Open();

reader = cmd.ExecuteReader();

dtFuncionarios.Load(reader);

dgvFuncionarios.DataSource = dtFuncionarios;

conn.Close();



PORDENTRODOTEMA

Figura 2.5 DataTable carregado por DataReader e resultado mostrado em um DataGridView

Dessa forma, pode-se criar um DataSet manualmente e, então, incluir vários objetos DataTable também de forma manual.
No entanto, existe um objeto que pode auxiliar no processo de alimentação de um DataSet, que é o DataAdapter.

O processo de funcionamento do DataAdapter é criar um link entre o DataSet e a base de dados e, através do método Fill,
atualizar os dados do DataSet. O método Fill age através de um objeto DataReader, que realiza consultas diretamente
na base de dados. Os objetos Command também são utilizados pelo DataAdapter para fazer o caminho inverso do Fill,
TXDQGRIRUQHFHVViULRDWXDOL]DURVGDGRVQDIRQWHGHGDGRV8PH[HPSORGHFULDomRGRFyGLJRGHXP'DWD$GDSWHU


PORDENTRODOTEMA
O processo de funcionamento do DataAdapter é criar um link entre o DataSet e a base de dados e, através do método Fill,
atualizar os dados do DataSet. O método Fill age através de um objeto DataReader, que realiza consultas diretamente
na base de dados. Os objetos Command também são utilizados pelo DataAdapter para fazer o caminho inverso do Fill,
TXDQGRIRUQHFHVViULRDWXDOL]DURVGDGRVQDIRQWHGHGDGRV8PH[HPSORGHFULDomRGRFyGLJRGHXP'DWD$GDSWHU
alimentando um DataSet pode ser visto na Figura 2.6.

using System;

using System.Windows.Forms;

using System.Data.OleDb;

using System.Data;

namespace TADSWinFormApp

public partial class ConexADO : Form

public ConexADO()

InitializeComponent();

private void ConexADO_Load(object sender, EventArgs e)

string strConnString = @”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB\Northwind.


accdb;Persist Security Info=False;”;

string query = “SELECT * FROM Funcionários”;



PORDENTRODOTEMA
OleDbDataAdapter adapter = new OleDbDataAdapter(query, strConnString);

DataSet dsNorthWind = new DataSet();

adapter.Fill(dsNorthWind, “TabFuncionarios”);

dgvFuncionarios.DataSource = dsNorthWind;

dgvFuncionarios.DataMember = “TabFuncionarios”;

dgvFuncionarios.Refresh();

Figura 2.6 DataAdapter alimentando um DataSet e resultado mostrado em um DataGridView


PORDENTRODOTEMA
1D )LJXUD  SRGHVH SHUFHEHU TXH R PpWRGR )LOO p R UHVSRQViYHO SHOD FULDomR QmR Vy GRV UHJLVWURV PDV WDPEpP
GD HVWUXWXUD &DVR D HVWUXWXUD Mi H[LVWD R PpWRGR )LOO YDL VRPHQWH DWXDOL]DU RV GDGRV PDQWHQGRD FRPR VH GH¿QLX
anteriormente.

$ )LJXUD  PRVWUD R FyGLJR FRPSOHPHQWDU DR DQWHULRU FRP D RSomR GH VDOYDU RV GDGRV DOWHUDGRV QD WDEHOD
³7DE)XQFLRQDULRV´ GD IRQWH GH GDGRV &RP LVVR QmR VHUi QHFHVViULR GH¿QLU PDQXDOPHQWH R REMHWR &RPPDQG (P
seguida, a Figura 2.8 mostra a execução do programa e o carregamento dos dados. A Figura 2.9, por sua vez, demonstra
o resultado do método Update() do objeto DataAdapter.

using System;

using System.Windows.Forms;

using System.Data.OleDb;

using System.Data;

namespace TADSWinFormApp

public partial class ConexADO : Form

string strConnString = @”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB\Northwind.


accdb;Persist Security Info=False;”;

DataSet dsNorthWind = new DataSet();

OleDbDataAdapter adapter;

public ConexADO()

InitializeComponent();



PORDENTRODOTEMA
}

private void btnCarregar_Click(object sender, EventArgs e)

VWULQJTXHU\ ³6(/(&7,GHQWL¿FDomR(PSUHVD6REUHQRPH1RPH>(QGHUHoRGH(PDLO@)520)XQFLRQiULRV´

adapter = new OleDbDataAdapter(query, strConnString);

adapter.Fill(dsNorthWind, “TabFuncionarios”);

dgvFuncionarios.DataSource = dsNorthWind;

dgvFuncionarios.DataMember = “TabFuncionarios”;

dgvFuncionarios.Refresh();

private void btnSalvar_Click(object sender, EventArgs e)

DataSet dsAlteracoes = dsNorthWind.GetChanges();

if (dsAlteracoes != null)

if (adapter.Update(dsAlteracoes, “TabFuncionarios”) > 0)

MessageBox.Show(“Tabela Atualizada!”);


PORDENTRODOTEMA
}

Figura 2.7 Método Update do objeto DataAdapter

Figura 2.8 Execução inicial, somente com a carga dos dados



PORDENTRODOTEMA

Figura 2.9 Alteração do e-mail do segundo registro e operação de Update()

&RP D DOWHUDomR GR UHJLVWUR PRVWUDGD QD )LJXUD  R 'DWD6HW UHVSRQViYHO SHOR DUPD]HQDPHQWR LGHQWL¿FD TXDLV
foram os registros que sofreram alterações e os atualiza na base de dados. Graças ao uso do método Update(), não foi
QHFHVViULRFULDUXPFRPDQGRHVSHFt¿FRSDUDDWXDOL]DomRGRVGDGRV


ACOMPANHENAWEB
MSDN – ADO.NET

‡ Este portal conta com o material mais completo e atualizado sobre a tecnologia ADO.NET,
demonstrando o uso de cada uma das classes que compõem esta biblioteca. Além disso, todos
os conceitos e todas as alterações realizadas em cada versão estão disponíveis neste portal.

Disponível em: <http://msdn.microsoft.com/pt-br/library/e80y5yhx(v=vs.110).aspx>. Acesso em: 5 set. 2014.

SQL Injection – Evitando brechas na segurança

‡ SQL Injection é um grande problema para querys criadas dinamicamente, durante a execução
do programa. Como essa é uma prática muito comum, saber como este ataque funciona e como
evitá-lo é primordial para qualquer programa comercial.
Disponível em: <http://technet.microsoft.com/en-us/library/ms161953(v=sql.105).aspx>. Acesso em: 15 set.
2014.

Strings de Conexão

‡ Portal que disponibiliza strings de conexão para um grande número de fontes de dados.
Disponível em: <http://www.connectionstrings.com>. Acesso em: 5 set. 2014.

Como instalar o template Northwind

‡ Este site mostra o processo para a instalação da base de dados Northwind, da Microsoft. Este
complexo exemplo simula a operação de uma empresa de vendas de produtos alimentícios.
Disponível em: <http://msdn.microsoft.com/pt-br/library/8b6y4c7s.aspx>. Acesso em: 5 set. 2014.



AGORAÉASUAVEZ
Instruções:
Agora, chegou a sua vez de exercitar seu aprendizado. A seguir, você encontrará algumas questões de múltipla
escolha e dissertativas. Leia cuidadosamente os enunciados e atente-se para o que está sendo pedido.

Questão 1

4XDLVVmRDVYDQWDJHQVQRXVRGHSDUkPHWURVGXUDQWHDH[HFXomRGRREMHWR&RPPDQG"

Questão 2

Marque a seguir apenas as alternativas que indicam provedores de dados:

a) ( ) System.Data.SQLServer

b)  6\VWHP'DWD2ඇH'%

c) ( ) System.Data.DataAdapter

d) ( ) System.Data.DataSet

e)  6\VWHP'DWD2UDFඇH&ඇLHQW


AGORAÉASUAVEZ
Questão 3

Assinale os casos nos quais é recomendado o uso do DataReader.

a)  'DGRVTXHQHFHVVLWDPVHUDUPD]HQDGRVQDPHPyULDSDUDPDQLSXඇDomR

b)  'DGRVTXHVHUmRXWLඇL]DGRVVRPHQWHSDUDඇHLWXUD

c)  1HFHVVLGDGHGHHVWDEHඇHFHUඇLJDomRFRPXP'DWD6HW

d) ( ) Processamento com necessidade de conexão aberta.

Questão 4

Estabeleça conexão com uma planilha Excel e exiba seus dados através de um DataReader.

Questão 5

&RPEDVHQRFyGLJRIRQWHGD4XHVWmRLPSOHPHQWHXP'DWD6HWTXHUHFHEDRVGDGRVGDSODQLOKD([FHODWUDYpVGHXPREMHWR
DataAdapter. Exiba o resultado em um DataGridView.



FINALIZANDO
Neste tema você pôde entrar em contato com um dos principais componentes do .NET Framework, o ADO.NET,
conjunto de classes que faz todo o trabalho de conexão e comunicação com uma fonte de dados.

Esse recurso é essencial para a existência de um sistema comercial, que é fortemente apoiado em bases de dados.

Embora os exemplos mostrados neste caderno tenham sido simples, a forma de uso desses componentes é a mesma,
YDULDQGRVRPHQWHQDFRPSOH[LGDGHGDTXHU\RXQDTXDQWLGDGHGHSDUkPHWURVHWDEHODVDVHUHPFRQHFWDGRV

REFERÊNCIAS
CONNECTION STRINGS. The Connection Strings Reference. Disponível em: <http://www.connectionstrings.com/>. Acesso em:
5 set. 2014.
LOTAR, Alfredo. Como Melhorar a Performance de Websites .NET. Os segredos dos sites de alto desempenho. 1. ed. São
Paulo: Novatec, 2013.
MICROSOFT. SQL Injection. (Evitando brechas na segurança). Technet. Disponível em: <http://technet.microsoft.com/en-us/
library/ms161953(v=sql.105).aspx>. Acesso em: 15 set. 2014.
MSDN. ADO.NET. Disponível em: <http://msdn.microsoft.com/pt-br/library/e80y5yhx(v=vs.110).aspx>. Acesso em: 5 set. 2014.
________. Como instalar bancos de dados de exemplo. (Template Northwind). Disponível em: <http://msdn.microsoft.com/pt-br/
library/8b6y4c7s.aspx>. Acesso em: 5 set. 2014.


GLOSSÁRIO
SQL Injection:WLSRGHDPHDoDjVHJXUDQoDGDEDVHGHGDGRVTXHLQVHUHWUHFKRVGHFyGLJRVLOHJDLVGHQWURGHXPD
instrução SQL, aproveitando brechas deixadas pelo programador. Ao concatenar uma string que representa uma query,
RLQYDVRUSRGHUiLQFOXLUFRPDQGRVSDUDEXUODUXPDFRQGLomRGHFRPSDUDomRPRGL¿FDUUHJLVWURVRXDWpGHVWUXLUDEDVH
de dados.

Sobrecarga de parâmetros:IXQo}HVFRPRPHVPRQRPHPDVTXHUHFHEHPTXDQWLGDGHVWLSRVGLIHUHQWHVGHSDUkPH-
tros.

OLE DB: API desenvolvida pela Microsoft para acesso a banco de dados com base em objetos COM.

ODBC:PpWRGRTXHIDFLOLWDRDFHVVRDGLYHUVRVEDQFRVGHGDGRVVHPQHFHVVLGDGHGHFRPSRQHQWHVHVSHFt¿FRV6LJOD
para Open Database Connectivity.

Template Northwind:WHPSODWHGLVSRQLELOL]DGRSHOD0LFURVRIWSDUDGHPRQVWUDomRGHVHXVSURGXWRVGDVXtWH2I¿FH1D
seção “Acompanhe na Web” você pode acessar um link com o roteiro para instalação deste produto.

GABARITO
Questão 1:

Resposta: (PERUD VHMDP QHFHVViULDV PDLV OLQKDV GH FyGLJR DR SURJUDPD RV SDUkPHWURV VmR HVVHQFLDLV SDUD D
VHJXUDQoDHRPHOKRUHQWHQGLPHQWRGRFyGLJR(VVHUHFXUVRDX[LOLDDYHUL¿FDURWLSRTXHHVWiVHQGRSDVVDGRSDUDTXHU\
e garante que nenhum comando será embutido na query sem ser desejado.



Questão 2

Resposta: Alternativa “B” e “E”. São provedores de dados mostrados neste caderno.

Para os demais:

‡ System.Data.SQLServer – este provedor não existe. O acesso ao SQL Server é feito pelo System.Data.SQLCLient.

‡ 6\VWHP'DWD'DWD$GDSWHU±FODVVHTXHGH¿QHR'DWD$GDSWHUTXHUHDOL]DWRGDVFRQH[}HVHQWUH'DWD6HWHIRQWHV
de dados. Utiliza-se de um provedor de dados, mas não é um deles.

‡ 6\VWHP'DWD'DWD6HW±FODVVHTXHGH¿QHR'DWD6HWFRPSRQHQWHLPSRUWDQWHGR$'21(7(QWUHWDQWRQmRpXP
provedor de dados.

Questão 3

Resposta: Alternativa “B” e “D”. Conforme visto neste caderno, caso sejam necessárias manipulações nos dados
recuperados, é indicado o uso de DataSet em conjunto com DataAdapter. Para casos de ligações com DataSet, o
DataReader é utilizado, mas seu uso é feito implicitamente por um DataAdapter.

Questão 4
Resposta:2UHVXOWDGRVHUiSDUHFLGRFRPRFyGLJRIRQWHGD)LJXUD

A diferença será a Connection String que deve ser a seguinte:

VWULQJ &RQQ6WULQJ  #´3URYLGHU 0LFURVRIW$&(2/('%'DWD 6RXUFH >/2&$/ 21'( (67,9(5 2


$548,92@([WHQGHG3URSHUWLHV ´´([FHO;PO+'5 <(6´´´

Ou então:

VWULQJ&RQQ6WULQJ #´3URYLGHU 0LFURVRIW-(72/('%'DWD6RXUFH >/2&$/21'((67,9(52$548,92@([WHQGHG


3URSHUWLHV ´´([FHO+'5 <(6´´´

Questão 5

Resposta:2FyGLJRGHYHUiVHUVLPLODUDRGD)LJXUDGHYHQGRVHUDOWHUDGDD6WULQJGH&RQH[mRFRPRPRVWUDGRQD
Questão 4.



Você também pode gostar