<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>-&#62;Developers-&#62;Null</title>
	<atom:link href="http://developersnull.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://developersnull.wordpress.com</link>
	<description>Desarrolladores apuntando a Null</description>
	<lastBuildDate>Fri, 20 Jan 2012 01:53:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='developersnull.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>-&#62;Developers-&#62;Null</title>
		<link>http://developersnull.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://developersnull.wordpress.com/osd.xml" title="-&#62;Developers-&#62;Null" />
	<atom:link rel='hub' href='http://developersnull.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Me cambio de casa :)</title>
		<link>http://developersnull.wordpress.com/2011/08/10/me-cambio-de-casa/</link>
		<comments>http://developersnull.wordpress.com/2011/08/10/me-cambio-de-casa/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 23:47:26 +0000</pubDate>
		<dc:creator>bpbrainiak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://developersnull.wordpress.com/?p=12</guid>
		<description><![CDATA[Efectivamene hace unos meses me hize el blog que (aun que me avergüenze) atiendo mas que este la direccion es http://code.bpbrainiak.cl/ para que le echen un ojo &#160; saludos!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=developersnull.wordpress.com&amp;blog=3659324&amp;post=12&amp;subd=developersnull&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Efectivamene hace unos meses me hize el blog que (aun que me avergüenze) atiendo mas que este</p>
<p>la direccion es http://code.bpbrainiak.cl/ para que le echen un ojo</p>
<p>&nbsp;</p>
<p>saludos!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/developersnull.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/developersnull.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/developersnull.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/developersnull.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/developersnull.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/developersnull.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/developersnull.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/developersnull.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/developersnull.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/developersnull.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/developersnull.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/developersnull.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/developersnull.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/developersnull.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=developersnull.wordpress.com&amp;blog=3659324&amp;post=12&amp;subd=developersnull&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://developersnull.wordpress.com/2011/08/10/me-cambio-de-casa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bpbrainiak</media:title>
		</media:content>
	</item>
		<item>
		<title>Autonum&#233;ricos en Oracle&#8230;</title>
		<link>http://developersnull.wordpress.com/2011/05/09/autonumricos-en-oracle/</link>
		<comments>http://developersnull.wordpress.com/2011/05/09/autonumricos-en-oracle/#comments</comments>
		<pubDate>Mon, 09 May 2011 03:34:43 +0000</pubDate>
		<dc:creator>bpbrainiak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://developersnull.wordpress.com/2011/05/09/autonumricos-en-oracle/</guid>
		<description><![CDATA[&#160; &#160; Si hay algo que usted noble desarrollador, sabrá, sobretodo si usa Oracle, es que este por su definición no soporta autonuméricos, ahora bien, usted noble desarrollador, sabrá (sobretodo si es desarrollador de Oracle) que este tiene secuencias, que pueden ser bastante útiles pero algunas veces (sobretodo cuando usamos frameworks de terceros como nhibernate [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=developersnull.wordpress.com&amp;blog=3659324&amp;post=11&amp;subd=developersnull&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p align="justify">&#160;</p>
<p align="justify">Si hay algo que usted noble desarrollador, sabrá, sobretodo si usa Oracle, es que este por su definición no soporta autonuméricos, ahora bien, usted noble desarrollador, sabrá (sobretodo si es desarrollador de Oracle) que este tiene secuencias, que pueden ser bastante útiles pero algunas veces (sobretodo cuando usamos frameworks de terceros como nhibernate o .netTiers) podemos usar el truco que les doy para crear autonuméricos en Oracle   <br /><span id="more-11"></span>Este truco dista de ser elegante, pero es bastante útil y funciona bastante bien</p>
<p>Primero la Tabla:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="rem">-- Create table</span></pre>
<pre><span class="lnum">   2:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">   3:  </span><span class="kwrd">create</span> <span class="kwrd">table</span> INVSITE</pre>
<pre><span class="lnum">   4:  </span>(</pre>
<pre class="alt"><span class="lnum">   5:  </span>  SITE       VARCHAR2(4) <span class="kwrd">not</span> <span class="kwrd">null</span>,</pre>
<pre><span class="lnum">   6:  </span>  TIPOMOV    VARCHAR2(2) <span class="kwrd">not</span> <span class="kwrd">null</span>,</pre>
<pre class="alt"><span class="lnum">   7:  </span>  FECHA      <span class="kwrd">DATE</span>,</pre>
<pre><span class="lnum">   8:  </span>  NUMDOC     NUMBER(10),</pre>
<pre class="alt"><span class="lnum">   9:  </span>  VENDOR     VARCHAR2(10),</pre>
<pre><span class="lnum">  10:  </span>  PLU        VARCHAR2(18) <span class="kwrd">not</span> <span class="kwrd">null</span>,</pre>
<pre class="alt"><span class="lnum">  11:  </span>  CANTIDAD   NUMBER(14,4),</pre>
<pre><span class="lnum">  12:  </span>  ANO        VARCHAR2(4) <span class="kwrd">not</span> <span class="kwrd">null</span>,</pre>
<pre class="alt"><span class="lnum">  13:  </span>  MES        VARCHAR2(2) <span class="kwrd">not</span> <span class="kwrd">null</span>,</pre>
<pre><span class="lnum">  14:  </span>  ARCHIVO    VARCHAR2(50),</pre>
<pre class="alt"><span class="lnum">  15:  </span>  EAN        VARCHAR2(18) <span class="kwrd">not</span> <span class="kwrd">null</span>,</pre>
<pre><span class="lnum">  16:  </span>  ID_INVSITE NUMBER <span class="kwrd">not</span> <span class="kwrd">null</span></pre>
<pre class="alt"><span class="lnum">  17:  </span>)</pre>
<pre><span class="lnum">  18:  </span>tablespace CORS</pre>
<pre class="alt"><span class="lnum">  19:  </span>  pctfree 10</pre>
<pre><span class="lnum">  20:  </span>  initrans 1</pre>
<pre class="alt"><span class="lnum">  21:  </span>  maxtrans 255</pre>
<pre><span class="lnum">  22:  </span>  storage</pre>
<pre class="alt"><span class="lnum">  23:  </span>  (</pre>
<pre><span class="lnum">  24:  </span>    initial 64K</pre>
<pre class="alt"><span class="lnum">  25:  </span>    minextents 1</pre>
<pre><span class="lnum">  26:  </span>    maxextents unlimited</pre>
<pre class="alt"><span class="lnum">  27:  </span>  );</pre>
<pre><span class="lnum">  28:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  29:  </span><span class="rem">-- Create/Recreate primary, unique and foreign key constraints</span></pre>
<pre><span class="lnum">  30:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  31:  </span><span class="kwrd">alter</span> <span class="kwrd">table</span> INVSITE</pre>
<pre><span class="lnum">  32:  </span>  <span class="kwrd">add</span> <span class="kwrd">constraint</span> PK_INVSITE <span class="kwrd">primary</span> <span class="kwrd">key</span> (ID_INVSITE)</pre>
<pre class="alt"><span class="lnum">  33:  </span>  <span class="kwrd">using</span> <span class="kwrd">index</span></pre>
<pre><span class="lnum">  34:  </span>  tablespace SIGEF</pre>
<pre class="alt"><span class="lnum">  35:  </span>  pctfree 10</pre>
<pre><span class="lnum">  36:  </span>  initrans 2</pre>
<pre class="alt"><span class="lnum">  37:  </span>  maxtrans 255</pre>
<pre><span class="lnum">  38:  </span>  storage</pre>
<pre class="alt"><span class="lnum">  39:  </span>  (</pre>
<pre><span class="lnum">  40:  </span>    initial 64K</pre>
<pre class="alt"><span class="lnum">  41:  </span>    minextents 1</pre>
<pre><span class="lnum">  42:  </span>    maxextents unlimited</pre>
<pre class="alt"><span class="lnum">  43:  </span>  );</pre>
<pre><span class="lnum">  44:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  45:  </span><span class="kwrd">alter</span> <span class="kwrd">table</span> INVSITE</pre>
<pre><span class="lnum">  46:  </span>  <span class="kwrd">add</span> <span class="kwrd">constraint</span> FK_MAESTRA_INVSITE <span class="kwrd">foreign</span> <span class="kwrd">key</span> (PLU)</pre>
<pre class="alt"><span class="lnum">  47:  </span>  <span class="kwrd">references</span> MAESTRA (PLU);</pre>
</div>
<p>.csharpcode, .csharpcode pre<br />
{<br />
	font-size: small;<br />
	color: black;<br />
	font-family: consolas, &#8220;Courier New&#8221;, courier, monospace;<br />
	background-color: #ffffff;<br />
	/*white-space: pre;*/<br />
}<br />
.csharpcode pre { margin: 0em; }<br />
.csharpcode .rem { color: #008000; }<br />
.csharpcode .kwrd { color: #0000ff; }<br />
.csharpcode .str { color: #006080; }<br />
.csharpcode .op { color: #0000c0; }<br />
.csharpcode .preproc { color: #cc6633; }<br />
.csharpcode .asp { background-color: #ffff00; }<br />
.csharpcode .html { color: #800000; }<br />
.csharpcode .attr { color: #ff0000; }<br />
.csharpcode .alt<br />
{<br />
	background-color: #f4f4f4;<br />
	width: 100%;<br />
	margin: 0em;<br />
}<br />
.csharpcode .lnum { color: #606060; }</p>
<p>Ahora, la secuencia </p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="rem">-- Create sequence</span></pre>
<pre><span class="lnum">   2:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">   3:  </span><span class="kwrd">create</span> <span class="kwrd">sequence</span> SEQ_INVSITE</pre>
<pre><span class="lnum">   4:  </span>minvalue 1</pre>
<pre class="alt"><span class="lnum">   5:  </span>maxvalue 999999999999999999999999999</pre>
<pre><span class="lnum">   6:  </span><span class="kwrd">start</span> <span class="kwrd">with</span> 401</pre>
<pre class="alt"><span class="lnum">   7:  </span>increment <span class="kwrd">by</span> 1</pre>
<pre><span class="lnum">   8:  </span>cache 20;</pre>
</div>
<p><p>Aquí tenemos un trigger que se encarga de la magia</p>
<p>&#160;</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>create or replace trigger TRG_INVSITE --&gt; nombre del trigger</pre>
<pre><span class="lnum">   2:  </span>  before insert on INVSITE --&gt; table afectada</pre>
<pre class="alt"><span class="lnum">   3:  </span><span class="kwrd">for</span> each row</pre>
<pre><span class="lnum">   4:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">   5:  </span>begin</pre>
<pre><span class="lnum">   6:  </span>    select SEQ_INVSITE.NEXTVAL --&gt; secuencia que controla el autonumerco</pre>
<pre class="alt"><span class="lnum">   7:  </span>    into :<span class="kwrd">new</span>.ID_INVSITE --&gt; nombre de la table y campo clave</pre>
<pre><span class="lnum">   8:  </span>    from dual; --&gt; la clausula from en oracle es obligatoria, con esto, usamos la tabla dual que es una tabla de sistema (<span class="kwrd">ref</span> http:<span class="rem">//www.adp-gmbh.ch/ora/misc/dual.html)</span></pre>
<pre class="alt"><span class="lnum">   9:  </span>end TRG_INVSITE;</pre>
</p></div>
<p>.csharpcode, .csharpcode pre<br />
{<br />
	font-size: small;<br />
	color: black;<br />
	font-family: consolas, &#8220;Courier New&#8221;, courier, monospace;<br />
	background-color: #ffffff;<br />
	/*white-space: pre;*/<br />
}<br />
.csharpcode pre { margin: 0em; }<br />
.csharpcode .rem { color: #008000; }<br />
.csharpcode .kwrd { color: #0000ff; }<br />
.csharpcode .str { color: #006080; }<br />
.csharpcode .op { color: #0000c0; }<br />
.csharpcode .preproc { color: #cc6633; }<br />
.csharpcode .asp { background-color: #ffff00; }<br />
.csharpcode .html { color: #800000; }<br />
.csharpcode .attr { color: #ff0000; }<br />
.csharpcode .alt<br />
{<br />
	background-color: #f4f4f4;<br />
	width: 100%;<br />
	margin: 0em;<br />
}<br />
.csharpcode .lnum { color: #606060; }</p>
<p align="justify">bueno, este truco no es mío pero, es bastante útil y lo mejor de todo, esto funciona bastante bien, si tienen algun truco, envienmelo por correo a bpbrainiak arroba gmail.com y yo publicaré su truco (previa validación)&#160; y lo mencionare como autor de el truco</p>
<p align="justify">&#160;</p>
<p align="justify">saludos y dejen sus posts</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/developersnull.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/developersnull.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/developersnull.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/developersnull.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/developersnull.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/developersnull.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/developersnull.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/developersnull.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/developersnull.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/developersnull.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/developersnull.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/developersnull.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/developersnull.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/developersnull.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=developersnull.wordpress.com&amp;blog=3659324&amp;post=11&amp;subd=developersnull&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://developersnull.wordpress.com/2011/05/09/autonumricos-en-oracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bpbrainiak</media:title>
		</media:content>
	</item>
		<item>
		<title>Guardar Archivos Binarios en SQL Server</title>
		<link>http://developersnull.wordpress.com/2008/07/02/guardar-archivos-binarios-en-sql-server/</link>
		<comments>http://developersnull.wordpress.com/2008/07/02/guardar-archivos-binarios-en-sql-server/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 13:24:07 +0000</pubDate>
		<dc:creator>bpbrainiak</dc:creator>
				<category><![CDATA[.net]]></category>

		<guid isPermaLink="false">http://developersnull.wordpress.com/?p=3</guid>
		<description><![CDATA[Extraido de Picacodigos Mon Feb 20 2006 En mi proyecto actual, una aplicación ASP .NET, el cliente expresó el deseo de guardar en base de datos las cartas, basadas en plantillas Word y generadas mediante la aplicación. Quieren guardarlas en la base de datos porque, al ser documentos oficiales, tienen que poder volver a imprimirse [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=developersnull.wordpress.com&amp;blog=3659324&amp;post=3&amp;subd=developersnull&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Extraido de <a href="http://www.picacodigos.com/2006/02/20/GuardarFicherosBinariosEnSQLServer.aspx">Picacodigos</a></p>
<p><span class="dayOfWeek">Mon </span> <span class="month"> Feb </span> <span class="dayOfMonth"> 20 </span> <span class="year"> 2006 </span></p>
<div class="entry">
<p>En mi proyecto actual, una aplicación ASP .NET, el cliente expresó el deseo de guardar en base de datos las cartas, basadas en plantillas Word y generadas mediante la aplicación. Quieren guardarlas en la base de datos porque, al ser documentos oficiales, tienen que poder volver a imprimirse o visualizarse <strong>exactamente igual</strong> a como se crearon en su día. Por lo tanto, necesitamos un método para guardar los ficheros Word en la base de datos en formato binario, como <em>stream</em> de datos y ser capaces de poder recuperarlos después para su visualización.</p>
<p><em>Nota: no es el objetivo de este post la creación de ficheros Word desde código C#. Podéis usar para ello la automatización Word, o componentes de terceros como los publicados por <a href="http://www.picacodigos.com/ct.ashx?id=0a921d29-8810-49f8-90e2-98d4659a651b&amp;url=http%3a%2f%2fwww.aspose.com" target="_blank">Aspose</a>, que son excelentes.</em></p>
<p>Vamos a crear una tabla simple en SQL Server para alojar los documentos. Para este ejemplo, la llamaremos <strong>DocsBinarios</strong>, y tendrá la siguiente estructura:</p>
<table border="1" width="70%">
<tbody>
<tr>
<td width="70%"><strong>Campo</strong></td>
<td width="15%"><strong>Tipo</strong></td>
<td width="15%"><strong>Nulos?</strong></td>
</tr>
<tr>
<td>DocId</td>
<td>Int (identity)</td>
<td>No</td>
</tr>
<tr>
<td>Documento</td>
<td>Image</td>
<td>No</td>
</tr>
<tr>
<td>NombreDoc</td>
<td>VarChar(100)</td>
<td>No</td>
</tr>
</tbody>
</table>
<p>Es bastante autoexplicativo: el campo <strong>DocId</strong> es un campo de clave primaria autogenerado. El campo <strong>Documento</strong> es el que va a almacenar los streams de bits, es decir los propios ficheros Word en formato binario. El campo <strong>NombreDoc</strong> almacenará el nombre que se proporcionó originalmente al documento cuando se generó.</p>
<p>Después crearemos un procedimiento almacenado, <strong>UploadDocs</strong>, que servirá para guardar registros en esta tabla:</p>
<div class="sourcecode"><span style="color:blue;">CREATE PROCEDURE </span><span style="color:black;">UploadDoc(@doc </span><span style="color:blue;">AS </span><span style="color:black;">Image, @nombre </span><span style="color:blue;">AS VarChar</span><span style="color:black;">(</span><span style="color:maroon;">100</span><span style="color:black;">))<br />
</span><span style="color:blue;">AS<br />
INSERT INTO </span><span style="color:black;">DocsBinarios (Documento, NombreDoc) </span><span style="color:blue;">values </span><span style="color:black;">(@doc, @nombre)<br />
</span><span style="color:blue;">GO<br />
</span></div>
<hr /><span style="font-size:8pt;font-family:tahoma;color:#808080;">Colorized by: <a href="http://www.picacodigos.com/ct.ashx?id=0a921d29-8810-49f8-90e2-98d4659a651b&amp;url=http%3a%2f%2fwww.CarlosAg.net%2fTools%2fCodeColorizer%2f">CarlosAg.CodeColorizer</a></span></p>
<p>También es bastante autoexplicativo: un simple INSERT INTO que recibe como parámetros un <em>Image</em> y un <em>VarChar</em></p>
<p>Y éste es el método que guarda los datos en la base de datos:</p>
<div class="sourcecode"><span style="color:blue;">private void </span><span style="color:black;">GuardarFicheroBDD(</span><span style="color:blue;">string </span><span style="color:black;">sRuta, </span><span style="color:blue;">string </span><span style="color:black;">sFichero)<br />
{<br />
</span><span style="color:darkgreen;">//Creamos un nuevo objeto de tipo FileStream para leer el fichero<br />
//Word en modo binario<br />
</span><span style="color:black;">System.IO.FileStream  fs </span><span style="color:blue;">= new </span><span style="color:black;">FileStream(sRuta + sFichero,<br />
System.IO.FileMode.Open)</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Creamos un array de bytes para almacenar los datos leídos por fs.<br />
</span><span style="color:black;">Byte[] data </span><span style="color:blue;">= new byte</span><span style="color:black;">[fs.Length]</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Y guardamos los datos en el array data<br />
</span><span style="color:black;">fs.Read(data, </span><span style="color:maroon;">0</span><span style="color:black;">, Convert.ToInt32(fs.Length))</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Abrimos una conexion. En este caso los datos de la cadena de<br />
//conexion a la base de datos se recuperan de una sección del<br />
//fichero web.config mediante ConfigurationSettings<br />
</span><span style="color:black;">SqlConnection cnn </span><span style="color:blue;">=<br />
new </span><span style="color:black;">SqlConnection(ConfigurationSettings.AppSettings[</span><span style="color:#808080;">"conexionBD"</span><span style="color:black;">])</span><span style="color:blue;">;<br />
</span><span style="color:black;">cnn.Open()</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Creamos un comando de tipo StoredProcedure para invocar a<br />
//UploadDocs<br />
</span><span style="color:black;">SqlCommand cmd </span><span style="color:blue;">= new </span><span style="color:black;">SqlCommand(</span><span style="color:#808080;">&#8220;UploadDoc&#8221;</span><span style="color:black;">, cnn)</span><span style="color:blue;">;<br />
</span><span style="color:black;">cmd.CommandType </span><span style="color:blue;">= </span><span style="color:black;">CommandType.StoredProcedure</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Añadimos los parametros esperados y los valores de los mismos<br />
</span><span style="color:black;">cmd.Parameters.Add(</span><span style="color:#808080;">&#8220;@doc&#8221;</span><span style="color:black;">, data)</span><span style="color:blue;">; </span><span style="color:darkgreen;">//los datos del fichero Word<br />
</span><span style="color:black;">cmd.Parameters.Add(</span><span style="color:#808080;">&#8220;@nombre&#8221;</span><span style="color:black;">, sFichero)</span><span style="color:blue;">; </span><span style="color:darkgreen;">//y su nombre<br />
//Ejecutamos el procedimiento almacenado, que inserta un nuevo<br />
//registro en DocsBinarios con los datos que queremos introducir<br />
</span><span style="color:black;">cmd.ExecuteNonQuery()</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Cerramos la conexión y el fichero<br />
</span><span style="color:black;">cnn.Close()</span><span style="color:blue;">;<br />
</span><span style="color:black;">fs.Close()</span><span style="color:blue;">;<br />
</span><span style="color:black;">}</span></div>
<hr /><span style="font-size:8pt;font-family:tahoma;color:#808080;">Colorized by: <a href="http://www.picacodigos.com/ct.ashx?id=0a921d29-8810-49f8-90e2-98d4659a651b&amp;url=http%3a%2f%2fwww.CarlosAg.net%2fTools%2fCodeColorizer%2f">CarlosAg.CodeColorizer</a></span></p>
<p>Ahora veamos el método para recuperar esos datos de la base de datos y mostrarlos como un fichero Word:</p>
<div class="sourcecode"><span style="color:blue;">private void </span><span style="color:black;">LeerDeBD()<br />
{<br />
</span><span style="color:darkgreen;">//Abrimos la conexion, exactamente igual que antes<br />
</span><span style="color:black;">SqlConnection cnn </span><span style="color:blue;">=<br />
new </span><span style="color:black;">SqlConnection(ConfigurationSettings.AppSettings[</span><span style="color:#808080;">"conexionBD"</span><span style="color:black;">])</span><span style="color:blue;">;<br />
</span><span style="color:black;">cnn.Open()</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Este es el comando que abre el registro que deseamos. Para este<br />
//ejemplo abrimos siempre el primer registro, habría que modificar<br />
// este código para que el método recibiera como parámetro el<br />
//registro que queremos abrir, claro.<br />
</span><span style="color:black;">SqlCommand comm </span><span style="color:blue;">= new </span><span style="color:black;">SqlCommand(</span><span style="color:#808080;">&#8220;SELECT * FROM DocsBinarios &#8221; +<br />
&#8221; WHERE docId = 1&#8243;</span><span style="color:black;">, cnn)</span><span style="color:blue;">;<br />
</span><span style="color:black;">comm.CommandType </span><span style="color:blue;">= </span><span style="color:black;">CommandType.Text</span><span style="color:blue;">;<br />
</span><span style="color:black;">SqlDataAdapter da </span><span style="color:blue;">= new </span><span style="color:black;">SqlDataAdapter(comm)</span><span style="color:blue;">;<br />
</span><span style="color:black;">DataSet ds </span><span style="color:blue;">= new </span><span style="color:black;">DataSet(</span><span style="color:#808080;">&#8220;Binarios&#8221;</span><span style="color:black;">)</span><span style="color:blue;">;<br />
</span><span style="color:black;">da.Fill(ds)</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Creamos un array de bytes que contiene los bytes almacenados<br />
//en el campo Documento de la tabla<br />
</span><span style="color:blue;">byte</span><span style="color:black;">[] bits </span><span style="color:blue;">= </span><span style="color:black;">((</span><span style="color:blue;">byte</span><span style="color:black;">[])(ds.Tables[</span><span style="color:maroon;">0</span><span style="color:black;">].Rows[</span><span style="color:maroon;">0</span><span style="color:black;">].ItemArray[</span><span style="color:maroon;">1</span><span style="color:black;">]))</span><span style="color:blue;">;<br />
</span><span style="color:black;">cnn.Close()</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Vamos a guardar ese array de bytes como un fichero en el<br />
//disco duro, un fichero temporal que después se podrá descartar.<br />
//Para evitar problemas de concurrencia de usuarios,<br />
//generamos un nombre único para el mismo<br />
</span><span style="color:blue;">string </span><span style="color:black;">sFile </span><span style="color:blue;">= </span><span style="color:#808080;">&#8220;tmp&#8221; </span><span style="color:black;">+ GenerarNombreFichero() + </span><span style="color:#808080;">&#8220;.doc&#8221;</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Creamos un nuevo FileStream, que esta vez servirá para<br />
//crear un fichero con el nombre especificado<br />
</span><span style="color:black;">FileStream fs </span><span style="color:blue;">= new </span><span style="color:black;">FileStream(Server.MapPath(</span><span style="color:#808080;">&#8220;.&#8221;</span><span style="color:black;">) + </span><span style="color:#808080;"><br />
@&#8221;\DocsGenerados\&#8221; </span><span style="color:black;">+ sFile, FileMode.Create)</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Y escribimos en disco el array de bytes que conforman<br />
//el fichero Word<br />
</span><span style="color:black;">fs.Write(bits, </span><span style="color:maroon;">0</span><span style="color:black;">, Convert.ToInt32(bits.Length))</span><span style="color:blue;">;<br />
</span><span style="color:black;">fs.Close()</span><span style="color:blue;">;<br />
</span><span style="color:darkgreen;">//Para mostrar el fichero, utilizamos una función<br />
//JavaScript llamada mostrarFichero (que lo único que<br />
//hace es cargar el fichero especificado)<br />
//y hacemos que se ejecute en un pop-up.<br />
</span><span style="color:blue;">string </span><span style="color:black;">script </span><span style="color:blue;">= </span><span style="color:#808080;">&#8220;&lt;script languaje=&#8217;javascript&#8217;&gt; &#8221;</span><span style="color:blue;">;<br />
</span><span style="color:black;">script +</span><span style="color:blue;">= </span><span style="color:#808080;">&#8220;mostrarFichero(&#8216;DocsGenerados/&#8221; </span><span style="color:black;">+ sFile + </span><span style="color:#808080;">&#8220;&#8216;) &#8221;</span><span style="color:blue;">;<br />
</span><span style="color:black;">script +</span><span style="color:blue;">= </span><span style="color:#808080;">&#8220;&lt;/script&gt;&#8221; </span><span style="color:black;">+ Environment.NewLine</span><span style="color:blue;">;<br />
</span><span style="color:black;">Page.RegisterStartupScript(</span><span style="color:#808080;">&#8220;mostrarFichero&#8221;</span><span style="color:black;">,script)</span><span style="color:blue;">;<br />
</span><span style="color:black;">}</span></div>
<hr /><span style="font-size:8pt;font-family:tahoma;color:#808080;">Colorized by: <a href="http://www.picacodigos.com/ct.ashx?id=0a921d29-8810-49f8-90e2-98d4659a651b&amp;url=http%3a%2f%2fwww.CarlosAg.net%2fTools%2fCodeColorizer%2f">CarlosAg.CodeColorizer</a></span></p>
<p>Y listo. Mediante éste último método el fichero Word se carga desde la base de datos y se muestra en un popup y en todo su esplendor.</p>
<p>Para que tengáis el código completo, ésta es la función JavaScript que carga el fichero generado desde base de datos:</p>
<div class="sourcecode"><span style="color:black;">&lt;script language</span><span style="color:blue;">=</span><span style="color:#808080;">&#8220;javascript&#8221;</span><span style="color:black;">&gt;<br />
</span><span style="color:blue;">function </span><span style="color:black;">mostrarFichero(destino) {<br />
</span><span style="color:blue;">window</span><span style="color:black;">.open(destino,</span><span style="color:blue;">null</span><span style="color:black;">,</span><span style="color:#808080;">&#8220;directories=no,height=600,<br />
width=800,left=0,top=0,location=no,menubar=yes,<br />
status=no,toolbar=yes,resizable=yes&#8221;</span><span style="color:black;">)<br />
</span><span style="color:blue;">document</span><span style="color:black;">.forms(</span><span style="color:maroon;">0</span><span style="color:black;">).submit()</span><span style="color:blue;">;<br />
</span><span style="color:black;">}<br />
&lt;/script&gt;</span></div>
<hr /><span style="font-size:8pt;font-family:tahoma;color:#808080;">Colorized by: <a href="http://www.picacodigos.com/ct.ashx?id=0a921d29-8810-49f8-90e2-98d4659a651b&amp;url=http%3a%2f%2fwww.CarlosAg.net%2fTools%2fCodeColorizer%2f">CarlosAg.CodeColorizer</a></span></p>
<p>Y éste el método <strong>GenerarNombreFichero()</strong>, que utiliza la cuenta de <em>ticks</em> del servidor para crear nombres <em>cuasi</em> únicos de fichero.</p>
<div class="sourcecode"><span style="color:blue;">private string </span><span style="color:black;">GenerarNombreFichero()<br />
{<br />
</span><span style="color:blue;">int </span><span style="color:black;">ultimoTick </span><span style="color:blue;">= </span><span style="color:maroon;">0</span><span style="color:blue;">;<br />
while</span><span style="color:black;">(ultimoTick</span><span style="color:blue;">==</span><span style="color:black;">Environment.TickCount)<br />
{<br />
System.Threading.Thread.Sleep(</span><span style="color:maroon;">1</span><span style="color:black;">)</span><span style="color:blue;">;<br />
</span><span style="color:black;">}<br />
ultimoTick</span><span style="color:blue;">=</span><span style="color:black;">Environment.TickCount</span><span style="color:blue;">;<br />
return </span><span style="color:black;">DateTime.Now.ToString(</span><span style="color:#808080;">&#8220;yyyyMMddhhmmss&#8221;</span><span style="color:black;">) + </span><span style="color:#808080;">&#8220;.&#8221; </span><span style="color:black;">+<br />
ultimoTick.ToString()</span><span style="color:blue;">;<br />
</span><span style="color:black;">}</span></div>
<hr /><span style="font-size:8pt;font-family:tahoma;color:#808080;">Colorized by: <a href="http://www.picacodigos.com/ct.ashx?id=0a921d29-8810-49f8-90e2-98d4659a651b&amp;url=http%3a%2f%2fwww.CarlosAg.net%2fTools%2fCodeColorizer%2f">CarlosAg.CodeColorizer</a></span></div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/developersnull.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/developersnull.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/developersnull.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/developersnull.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/developersnull.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/developersnull.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/developersnull.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/developersnull.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/developersnull.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/developersnull.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/developersnull.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/developersnull.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/developersnull.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/developersnull.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/developersnull.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/developersnull.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=developersnull.wordpress.com&amp;blog=3659324&amp;post=3&amp;subd=developersnull&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://developersnull.wordpress.com/2008/07/02/guardar-archivos-binarios-en-sql-server/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bpbrainiak</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://developersnull.wordpress.com/2008/05/06/hello-world/</link>
		<comments>http://developersnull.wordpress.com/2008/05/06/hello-world/#comments</comments>
		<pubDate>Tue, 06 May 2008 13:24:40 +0000</pubDate>
		<dc:creator>bpbrainiak</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=developersnull.wordpress.com&amp;blog=3659324&amp;post=1&amp;subd=developersnull&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to <a href="http://wordpress.com/">WordPress.com</a>. This is your first post. Edit or delete it and start blogging!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/developersnull.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/developersnull.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/developersnull.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/developersnull.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/developersnull.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/developersnull.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/developersnull.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/developersnull.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/developersnull.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/developersnull.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/developersnull.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/developersnull.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/developersnull.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/developersnull.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/developersnull.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/developersnull.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=developersnull.wordpress.com&amp;blog=3659324&amp;post=1&amp;subd=developersnull&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://developersnull.wordpress.com/2008/05/06/hello-world/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bpbrainiak</media:title>
		</media:content>
	</item>
	</channel>
</rss>
