<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MXStudio &#187; Alfredo</title>
	<atom:link href="http://www.mxstudio.com.br/author/alfredo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mxstudio.com.br</link>
	<description>Macromedia e Adobe - Artigos, colunas, tutorias e muito mais...</description>
	<lastBuildDate>Sun, 29 Jan 2012 11:31:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Informações com múltiplas instruções SQL</title>
		<link>http://www.mxstudio.com.br/tecnologia/bancodedados/informacoes_com_multiplas_instrucoes_sql/</link>
		<comments>http://www.mxstudio.com.br/tecnologia/bancodedados/informacoes_com_multiplas_instrucoes_sql/#comments</comments>
		<pubDate>Sat, 27 Oct 2007 00:00:00 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Neste artigo, veremos como retornar registros com uma stored procedure com duas instru&#231;&#245;es SQL.]]></description>
			<content:encoded><![CDATA[<link href="http://www.mxstudio.com.br/webgerenciador/_css/PadraoCss.css" rel="stylesheet" type="text/css" /> <script src="http://www.mxstudio.com.br/js/ColorCode.js"></script><br />
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td id="colunaTexto" valign="top">
<h1>Como exibir informações com múltiplas instruções SQL</h1>
<p>Ao utilizar múltiplas instruções SQL economizamos os recursos compartilhados da rede e servidor, como largura de banda, memória, CPU, pois reduzimos o número de acessos ao servidor web.</p>
<p>Neste artigo, veremos como retornar registros com uma stored procedure com duas instruções SQL. Inicialmente, declaramos a string de conexão com o banco de dados</p>
<p id="codigo">string strConexao = &#8220;Data Source=(local);Integrated Security=SSPI;Initial Catalog=Northwind;&#8221;;</p>
<p>e a stored procedure usada no exemplo:</p>
<p id="codigo">string sSql = &#8220;GetTotalAndProdutos&#8221;;</p>
<p>Se preferir utilize instruções SQL separadas por ponto-e-vírgula:</p>
<p id="codigo">string sSql = &#8221; SELECT Count(*) AS Total FROM Products; SELECT ProductName, UnitPrice FROM Products&#8221;;</p>
<p>Com a instrução using criamos uma nova instância da classe SqlConnection e passamos a string de conexão:</p>
<p id="codigo">using (SqlConnection conn = new SqlConnection(strConexao))<br />
{</p>
<p>Criamos e definimos um objeto SqlDataReader como null.</p>
<p id="codigo">SqlDataReader r = null;</p>
<p> 		    Em seguida, criamos uma nova instância da classe SqlCommand e passamos ao construtor o objeto SqlConnection e a string com o nome da stored procedure.</p>
<p id="codigo">SqlCommand cmd = new SqlCommand(sSql, conn);</p>
<p> 		    Definimos a propriedade CommandType como StoredProcedure.</p>
<p id="codigo">cmd.CommandType = CommandType.StoredProcedure;</p>
<p> 		    Ao usar instruções SQL defina a propriedade CommandType como Text:</p>
<p id="codigo">cmd.CommandType = CommandType.Text;</p>
<p> 		    Dentro dos blocos try, catch, finally, respectivamente, abrimos e exibimos os dados, manipulamos as exceções que podem ocorrer e fechamos a conexão com o banco de dados.</p>
<p id="codigo"> try<br />
{<br />
conn.Open();</p>
<p>Definimos o objeto SqlDataReader:</p>
<p id="codigo">r = cmd.ExecuteReader(CommandBehavior.CloseConnection);</p>
<p> Retornamos o índice do campo &#8220;total&#8221;:</p>
<p id="codigo">int t = r.GetOrdinal(&#8220;total&#8221;);</p>
<p> Exibimos a string &#8220;Total de registros:&#8221;.</p>
<p id="codigo">Response.Write(&#8220;&lt;b&gt;&lt;span style=\&#8221;text-decoration: underline\&#8221;&gt;Total de registros:&lt;/span&gt;&lt;/b&gt; &#8220;);</p>
<p> Iniciamos a leitura dos dados</p>
<p id="codigo">r.Read();</p>
<p> e exibimos o total de registros retornados:</p>
<p id="codigo">Response.Write(r.GetInt32(t) + &#8220;&lt;br/&gt;&#8221;);</p>
<p> Usamos o método NextResult para exibir os registros do próximo conjunto de registros.</p>
<p id="codigo">r.NextResult();</p>
<p> Verificamos se há registros para exibir:</p>
<p id="codigo">if (r.HasRows)</p>
<p> Neste caso especifico, podemos usar também:</p>
<p id="codigo">if (r.GetInt32(t) &gt; 0)</p>
<p> Em seguida, extraímos o índice do campo ProductName e do campo UnitPrice.</p>
<p id="codigo">int produto = r.GetOrdinal(&#8220;ProductName&#8221;);<br />
int valor = r.GetOrdinal(&#8220;UnitPrice&#8221;);</p>
<p>Criamos a tabela onde exibiremos os dados.</p>
<p id="codigo">Response.Write(&#8220;&lt;table&gt;&lt;tr&gt;&lt;td style=\&#8221;width: 150px\&#8221;&gt;&lt;b&gt;Produto&lt;/b&gt;&lt;/td&gt;&lt;td style=\&#8221;width: 100px\&#8221;&gt;&lt;b&gt;Valor unitário&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&#8221;);</p>
<p> Percorremos todos os registros do segundo conjunto de registros.</p>
<p id="codigo">while (r.Read())<br />
{</p>
<p>Exibimos o nome do produto com o método GetString</p>
<p id="codigo">Response.Write(&#8220;&lt;tr&gt;&lt;td style=\&#8221;width: 150px\&#8221;&gt;&#8221; + r.GetString(produto) + &#8220;&lt;/td&gt;&#8221;);</p>
<p> e o valor unitário de cada produto com o método GetDecimal:</p>
<p id="codigo">Response.Write(&#8220;&lt;td style=\&#8221;width: 100px\&#8221;&gt;&#8221; + string.Format(ci,&#8221;{0:c}&#8221;, r.GetDecimal(valor)) + &#8220;&lt;/td&gt;&lt;/tr&gt;&#8221;);</p>
<p> O método Format da classe String formata a saída como um valor monetário</p>
<p id="codigo">string.Format(ci,&#8221;{0:c}&#8221;, r.GetDecimal(valor))</p>
<p> e define a cultura como <strong>pt-BR</strong> &#8211; Português Brasil. Desta forma, a saída será sempre em reais, independente do idioma usado pelo computador do usuário.</p>
<p id="codigo">CultureInfo ci = new CultureInfo(&#8220;pt-BR&#8221;);</p>
<p> Ao finalizar o exemplo, exibimos a tag de fechamento da tabela</p>
<p id="codigo">Response.Write(&#8220;&lt;/table&gt;&#8221;);</p>
<p> exibimos o bloco catch</p>
<p id="codigo">catch (SqlException)<br />
{<br />
Response.Write(&#8220;Erro SQL.&#8221;);<br />
}</p>
<p>e o bloco finally, onde encerramos a conexão com o banco de dados.</p>
<p id="codigo">finally<br />
{<br />
if (!r.IsClosed) r.Close();<br />
}</p>
<p>A seguir, temos os arquivos e  códigos que compõe este exemplo.</p>
<p id="codigo">//Arquivo de exemplo: Default.aspx.cs<br />
using System;<br />
using System.Web.UI;<br />
using System.Web.UI.WebControls;<br />
using System.Data;<br />
using System.Data.SqlClient;<br />
using System.Globalization;public partial class _Default : System.Web.UI.Page<br />
{<br />
protected void Page_Load(object sender, EventArgs e)<br />
{<br />
string strConexao = &#8220;Data Source=(local);Integrated Security=SSPI;Initial Catalog=Northwind;&#8221;;<br />
string sSql = &#8220;GetTotalAndProdutos&#8221;;<br />
using (SqlConnection conn = new SqlConnection(strConexao))<br />
{<br />
SqlDataReader r = null;<br />
SqlCommand cmd = new SqlCommand(sSql, conn);<br />
cmd.CommandType = CommandType.Text;</p>
<p>try<br />
{<br />
conn.Open();<br />
r = cmd.ExecuteReader(CommandBehavior.CloseConnection);<br />
int t = r.GetOrdinal(&#8220;total&#8221;);<br />
Response.Write(&#8220;&lt;b&gt;&lt;span style=\&#8221;text-decoration: underline\&#8221;&gt;Total de registros:&lt;/span&gt;&lt;/b&gt; &#8220;);<br />
r.Read();<br />
Response.Write(r.GetInt32(t) + &#8220;&lt;br/&gt;&#8221;);</p>
<p>r.NextResult();<br />
if (r.HasRows)<br />
{<br />
int produto = r.GetOrdinal(&#8220;ProductName&#8221;);<br />
int valor = r.GetOrdinal(&#8220;UnitPrice&#8221;);<br />
Response.Write(&#8220;&lt;table&gt;&lt;tr&gt;&lt;td style=\&#8221;width: 150px\&#8221;&gt;&lt;b&gt;Produto&lt;/b&gt;&lt;/td&gt;&lt;td style=\&#8221;width: 100px\&#8221;&gt;&lt;b&gt;Valor unitário&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&#8221;);</p>
<p>CultureInfo ci = new CultureInfo(&#8220;pt-BR&#8221;);<br />
while (r.Read())<br />
{<br />
Response.Write(&#8220;&lt;tr&gt;&lt;td style=\&#8221;width: 150px\&#8221;&gt;&#8221; + r.GetString(produto) + &#8220;&lt;/td&gt;&#8221;);<br />
Response.Write(&#8220;&lt;td style=\&#8221;width: 100px\&#8221;&gt;&#8221; + string.Format(ci,&#8221;{0:c}&#8221;, r.GetDecimal(valor)) + &#8220;&lt;/td&gt;&lt;/tr&gt;&#8221;);<br />
}<br />
Response.Write(&#8220;&lt;/table&gt;&#8221;);<br />
}<br />
}<br />
catch (SqlException)<br />
{<br />
Response.Write(&#8220;Erro SQL.&#8221;);<br />
}<br />
finally<br />
{<br />
if (!r.IsClosed) r.Close();<br />
}<br />
}<br />
}<br />
}</p>
<p>Temos o arquivo Default.aspx</p>
<p id="codigo">&lt;%@ Page Language=&#8221;C#&#8221; AutoEventWireup=&#8221;true&#8221;  CodeFile=&#8221;Default.aspx.cs&#8221; Inherits=&#8221;_Default&#8221; %&gt;<br />
&lt;html&gt;<br />
&lt;head runat=&#8221;server&#8221;&gt;<br />
&lt;title&gt;Exemplo com o método NextResult&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;form id=&#8221;form1&#8243; runat=&#8221;server&#8221;&gt;<br />
&lt;div&gt;<br />
&lt;/div&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
e a stored procedure GetTotalAndProdutos usada no exemplo:</p>
<p id="codigo">CREATE PROCEDURE GetTotalAndProdutos		    AS<br />
SET NOCOUNT ON<br />
SELECT Count(*) AS Total FROM Products<br />
SELECT     ProductName, UnitPrice FROM Products<br />
GO</p>
<p><strong>  </strong><a href="http://www.mxstudio.com.br/apoio/upload/arquivos_SQL_Lotar.zip" target="_blank">Download arquivos</a></p>
<p><strong>  Sobre o autor:</strong></p>
<p>Alfredo Lotar é consultor, programador, escritor. Desenvolve aplicações com ASP.NET, JavaScript, XML, C#, Visual Basic e SQL Server. É autor do livro XML para Programadores ASP, da editora Axcel Books, e dos livros ASP.NET com C# – Curso Prático, e <a href="http://www.novateceditora.com.br/livros/aspnet2/">Como programar com ASP.NET e C#</a>, ambos publicados pela Novatec Editora. Atualmente, passa a maior parte do tempo desenvolvendo aplicações, escrevendo livros ou artigos, testando códigos e analisando falhas de segurança em web sites de clientes. O autor pode ser contactado pelo e-mail: alfredo.programador@bol.com.br.</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/tecnologia/bancodedados/informacoes_com_multiplas_instrucoes_sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Capítulo do livro &#8220;Como Programar com ASP.NET e C#&#8221;</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/aspnet/capitulo_do_livro_como_programar_com_asp_net_e_c_/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/aspnet/capitulo_do_livro_como_programar_com_asp_net_e_c_/#comments</comments>
		<pubDate>Wed, 15 Aug 2007 00:00:00 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[ASP.net]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[O  autor Alfredo Lotar entrou em contato conosco pedindo que public&#225;ssemos um cap&#237;tulo de exemplo de seu &#250;ltimo livro, e como o conte&#250;do pode ser &#250;til a nossa comunidade aqui estamos n&#243;s disponibilizando esse mate]]></description>
			<content:encoded><![CDATA[<link href="http://www.mxstudio.com.br/webgerenciador/_css/PadraoCss.css" rel="stylesheet" type="text/css" /> <script src="http://www.mxstudio.com.br/js/ColorCode.js"></script><br />
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td id="colunaTexto" valign="top">
<h1>Capítulo  do livro &#8220;Como Programar com ASP.NET e C#&#8221; &#8211; Alfredo Lotar</h1>
<p>Olá pessoal.</p>
<p align="justify">O autor  Alfredo Lotar entrou em contato conosco pedindo que publicássemos um capítulo de exemplo de seu último livro, e como o conteúdo pode ser útil a nossa comunidade aqui estamos nós disponibilizando esse material para vocês.</p>
<p><strong>Descrição: </strong>Capítulo de exemplo do livro &#8220;Como Programar com ASP.NET e C#&#8221; com 50 páginas de conteúdo. Aborda C# e ASP.NET.</p>
<p><strong>Fomarto: </strong>PDF</p>
<p><strong>Download:</strong> <a href="http://www.novateceditora.com.br/livros/aspnet2/capitulo9788575221211.pdf" target="_blank">http://www.novateceditora.com.br/livros/aspnet2/capitulo9788575221211.pdf</a></p>
<p>Abraços,</p>
<p><strong>Autor: Danilo Santana &#8211; Administrador do Portal MXSTUDIO</strong></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/aspnet/capitulo_do_livro_como_programar_com_asp_net_e_c_/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

