Escolar Documentos
Profissional Documentos
Cultura Documentos
Visual C# 2010 Express Edition SQL Server 2008 Express Edition Banco de dados Northwind.mdf (attached)
Criando o projeto
Neste projeto exemplo vamos abrir dois DataReader usando dois comandos na mesma conexo:
Comando cmdDetail e DataReader drDetail - Obtm os detalhes do pedido para cada pedido na tabela Order Details;
Vamos criar um novo projeto no Visual C# 2010 Express Edition acionando o menu File -> New Project e a seguir escolhendo o template Windows Forms Application; Informe o nome MultiplosComandos_PorConexao e clique no boto OK; A seguir abra a janela Database Explorer e clique no cone Data Connections com o boto direito do mouse e selecione Add Connections; Na janela Add Connection escolha o Data Source - Microsoft SQL Server Database File (SqlClient) - e informe o local do banco de dados Northwind.mdf;
Obs: Eu estou anexando o banco de dados Northwind.mdf no meu SQL Server. Aps clicar no boto OK voc dever ter acesso a todos os objetos do banco de dados Northwind.mdf no SQL Server. No formulrio padro form1.cs inclua os seguintes controles:
ListBox - lstDados
Vamos declarar os seguintes namespaces no inicio do formulrio: using System; using System.Windows.Forms; using System.Data.SqlClient; Vamos definir a string de conexo e ativar o recurso MARS : string sqlConnectString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\dados\Northwind.MDF;Integra ted Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"; O cdigo do evento Click do boto Executar mostrado a seguir:
private void btnExecutar_Click(object sender, EventArgs e) { string sqlConnectString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\dados\Northwind.MDF;In Instance=True;MultipleActiveResultSets=True"; SqlConnection connection = new SqlConnection(sqlConnectString); // cria o DataReader com 3 registros da tabela Orders SqlCommand cmdOrder = connection.CreateCommand(); cmdOrder.CommandText ="SELECT TOP 5 OrderID, OrderDate,ShipCity FROM Orders";
connection.Open(); SqlDataReader drOrder = cmdOrder.ExecuteReader(); // Percorre o reader com os registros dos pedidos while (drOrder.Read()) { lstDados.Items.Add("Pedido ID : " + drOrder["OrderID"] + " Cidade : " + drOrder["ShipCity"]);
} connection.Close();
// Cria um DataReader com os detalhes do pedido SqlCommand cmdDetail = connection.CreateCommand(); cmdDetail.CommandText = "SELECT ProductID, Quantity FROM [Order Details] WHERE OrderID=" + dr // percorre os detalhes do pedido para o pedido using (SqlDataReader drDetail = cmdDetail.ExecuteReader()) { while (drDetail.Read()) { lstDados.Items.Add("\tProduto ID : " + drDetail["ProductID"] + "\tQuantidade : " + drDetail["Quantit } lstDados.Items.Add("-------------------------------------------------------------------"); drDetail.Dispose(); }
No cdigo acima temos o seguinte: 1. 2. 3. 4. 5. 6. 7. 8. 9. Definimos a string de conexo Criamos o comando cmdOrder Abrimos a conexo Criamos o DataReader drOrder sobre o comando cmdOrder Percorremos o DataReader drOrder Exibimos o no. do pedido e a cidade Criamos o comando cmdDetail Definimos um novo DataReader drDetail no comando cmdDetail Percorremos o DataReader drDetail e exibimos os detalhes do pedido
O exemplo mostra que ativando o recurso MARS podemos usar mais de um comando em uma nica conexo. Pegue o projeto completo aqui: MultiplosComandos_PorConexao.zip
Mat 3:11 Eu (Joo Batista), na verdade, vos batizo em gua, na base do arrependimento; mas aquele (Jesus) que vem aps mim mais poderoso do que eu, que nem sou digno de levar-lhe as alparcas; ele vos batizar no Esprito Santo, e em fogo. Mat 3:12 A sua p ele tem na mo, e limpar bem a sua eira; recolher o seu trigo ao celeiro, mas queimar a palha em fogo inextinguvel.