<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-648501934927072213</id><updated>2011-08-16T03:28:41.393-07:00</updated><category term='SQLite y Triggers -IR-'/><category term='SQLite y Mono .Net'/><category term='SQLite y Groovy'/><category term='SQLite y C'/><category term='Exposiciones'/><category term='Material Traducido'/><category term='Prensa'/><category term='SQLite y Gambas'/><category term='Practica y Ejemplos'/><category term='Preguntas'/><category term='SQLite y Python'/><category term='Presentacion'/><category term='Usos No apropiados'/><category term='Características'/><category term='Charla de SqliteLatino'/><category term='De SQL a SQLite'/><category term='Usos apropiados'/><category term='SQLite y Java'/><category term='SQLite y PhP'/><category term='SoftSqlite'/><category term='SQLite y Ruby'/><title type='text'>SQLite Latino America</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sqlite-latino.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7982375661896900647</id><published>2011-04-12T17:39:00.001-07:00</published><updated>2011-04-12T17:39:49.316-07:00</updated><title type='text'>SQLite Articulo en PDF</title><content type='html'>Hola Amigos , aqui les traemos una pequeño articulo de SQLite &lt;br /&gt;&lt;a href="http://es.scribd.com/doc/52882068/SQLite" style="-x-system-font: none; display: block; font-family: Helvetica,Arial,Sans-serif; font-size-adjust: none; font-size: 14px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 12px auto 6px auto; text-decoration: underline;" title="View SQLite  on Scribd"&gt;SQLite &lt;/a&gt;&lt;iframe class="scribd_iframe_embed" data-aspect-ratio="0.707514450867052" data-auto-height="true" frameborder="0" height="600" id="doc_34756" scrolling="no" src="http://www.scribd.com/embeds/52882068/content?start_page=1&amp;amp;view_mode=list&amp;amp;access_key=key-7tv13o05cj4dj11lq9b" width="100%"&gt;&lt;/iframe&gt;&lt;script type="text/javascript"&gt;(function() { var scribd = document.createElement("script"); scribd.type = "text/javascript"; scribd.async = true; scribd.src = "http://www.scribd.com/javascripts/embed_code/inject.js"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(scribd, s); })();&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7982375661896900647?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7982375661896900647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7982375661896900647'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2011/04/sqlite-articulo-en-pdf.html' title='SQLite Articulo en PDF'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-3640548293100031301</id><published>2009-04-06T14:56:00.001-07:00</published><updated>2009-04-06T14:58:31.394-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Material Traducido'/><title type='text'>Concatenación  - UNION - uso de LIKE - Nombre de columnas con espacios</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dibacco.com.ar/images/folletos/cadena_conductoras_intermediarias_detalle.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 238px; height: 178px;" src="http://www.dibacco.com.ar/images/folletos/cadena_conductoras_intermediarias_detalle.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;CONCAT&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;E&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;NACIÓN DE CAMPOS&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Es posible unir dos o mas cadenas usando un operador de concatenación. El estandar de SQL dice que se deberia usar ||, pero hay muchas diferencias entre los principales proveedores.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SELECT codigo || nombre&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   FROM &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;departamentos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UNION&lt;/span&gt;.&lt;span style="font-style: italic;"&gt; Uso de UNION para armar una unica vista con diferentes tablas.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Para crear una vista con datos provenientes de diferentes tablas, debe usar sentencias SELECT separadas por la palabra reservada UNION.&lt;br /&gt;Asegurese de que se enumeraron la misma cantidad de columnas en cada una de las sentencias SELECT.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SELECT nombre FROM Clientes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;UNION&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SELECT nombre FROM Empleados&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;UNION&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SELECT nombre from artistas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LIKE.&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Uso del comando LIKE en una sentencia SELECT.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;El comando LIKE permite el uso de caracteres comodines:&lt;br /&gt;% Se usa para reemplazar una cadena&lt;br /&gt;_ Se usa para reemplazar un solo caracter.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;En el siguiente ejemplo se listan los paises que comienzan con Z. El país Zambia se ajusta al criterio de elección, ya que 'ambia' se iguala con %.&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;SELECT nombre&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FROM paises&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;WHERE nombre LIKE 'Z%'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;BUSQUEDA EN TEXTO COMPLETO&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;El método "Fuerza bruta" consiste en usar el operador LIKE en cualquiera de los campos a ser inspeccionados.&lt;br /&gt;Esto sería relativamente caro, pero lo suficientemente bueno en la mayoria de los casos. El término a buscar debe escribirse entre dos caracteres comodines y rodeado por comillas simples.&lt;br /&gt;Se deberia construir la cadena literal en algun lenguaje de script - ¡No olvidar las comillas simples!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SELECT nombre FROM gisq.cia&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;WHERE nombre LIKE '%el%'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FUNCIONES DE AGREGADO. &lt;/span&gt;&lt;span style="font-style: italic;"&gt;Mostrar un nombre de columna para una funcion de agregado&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Cuando uno de los resultados a devolver es calculado (por ejemplo una suma) el nombre de la columna se asignará arbitrariamente. Es posible especificar uno particular, del siguiente modo:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SELECT region, SUM(poblacion) AS Poblacion&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FROM cia GROUP BY region&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NOMBRES DE COLUMNAS CON ESPACIOS.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Es posible definir nombre de columnas con espacios y estas pueden ser accedidas en las consultas. Por ejemplo:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CREATE TABLE MonstruoEspacial("Balance de cuenta" INT);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO MonstruoEspacial VALUES (42);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SELECT "Balance de cuenta" FROM MonstruoEspacial&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;traduccido  por&lt;span style="font-style: italic;"&gt; Monica Galarza&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-3640548293100031301?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3640548293100031301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3640548293100031301'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2009/04/concatenacion-union-uso-de-like-nombre_06.html' title='Concatenación  - UNION - uso de LIKE - Nombre de columnas con espacios'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-4421789710497095877</id><published>2009-04-06T14:54:00.000-07:00</published><updated>2009-04-06T14:58:31.394-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Material Traducido'/><title type='text'>EQUI-JOIN (inner join) - SELF JOIN</title><content type='html'>&lt;div style="text-align: justify;"&gt; Saludos, a los integrantes de la comunidad, con este post iniciamos una serie de articulos mediante los cuales acercaremos material traducido desde sitios en inglés.&lt;br /&gt;  Comenzaremos este proyecto poniendo a disposición la traducción del contenido en el sitio &lt;a href="http://sqlzoo.net/howto/source/u.cgi/tip821957/sqlite"&gt;SQLzoo.net.&lt;/a&gt;&lt;br /&gt;Las traducciones no son literales, en algunos casos se han interpretados los textos a fin de poder proveer una mejor explicación de los ejemplos contenidos.&lt;br /&gt;  Si desean que se traduzca el contenido de algun otro sitio, seran bienvenidas sus sugerencias.&lt;br /&gt;Bueno manos a la obra ...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_DyM6kCqi5go/SbMP0vVOm8I/AAAAAAAAAAM/vH8Ea4IIQMo/s1600-h/jefe_empleados.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 91px; height: 120px;" src="http://2.bp.blogspot.com/_DyM6kCqi5go/SbMP0vVOm8I/AAAAAAAAAAM/vH8Ea4IIQMo/s320/jefe_empleados.jpeg" alt="" id="BLOGGER_PHOTO_ID_5310605784333065154" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Como usar un EQUI_JOIN (inner join) para relacionar dos tablas con el mismo nombre&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Supongamos que tenemos una tabla &lt;span style="font-weight: bold;"&gt;empleados&lt;/span&gt; en donde guardamos los datos de los empleados y de los jefes de departamento.&lt;br /&gt;Queremos armar una consulta que muestre el identificador de empleado, nombre del empleado, identificador de su jefe, nombre de su jefe y el departamento al que pertenece su jefe.&lt;br /&gt;Para esto, deberemos relacionar la tabla empleados consigo misma mediante un "self join".&lt;br /&gt;A cada copia de la tabla le asignamos un "alias", en este caso usamos &lt;span style="font-style: italic;"&gt;e&lt;/span&gt; para los empleados y &lt;span style="font-style: italic;"&gt;j&lt;/span&gt; para los jefes y a partir de alli podemos tratarlas como tablas diferentes.&lt;br /&gt;&lt;br /&gt;Por defecto la unión obtenida es interna (inner join), esto significa que Ruben (Un empleado sin jefe) no se muestra en los resultados.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CREATE TABLE empleados(&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;  &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;id_empleado INTEGER PRIMARY KEY,&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;nbre_empleado VARCHAR(10),&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;id_dpto VARCHAR(10),&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;id_jefe INTEGER REFERENCES empleados&lt;br /&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO empleados VALUES (1,'Ruben','Ing',NULL);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO empleados VALUES (2,'Juan','SoC',1);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO empleados VALUES (3,'Andres','SoC',2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO empleados VALUES (4,'Alicia','SoC',2);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;SELECT e.nombre as empleado, j.nombre as jefe, j.id_dpto as dpto_jefe&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;   FROM empleados e, empleados j&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;WHERE e.jefe_id = j.empleado_id&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;div style="text-align: right;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-style: italic;"&gt;Traducido por Monica Galarza&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-4421789710497095877?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4421789710497095877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4421789710497095877'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2009/04/equi-join-inner-join-self-join.html' title='EQUI-JOIN (inner join) - SELF JOIN'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_DyM6kCqi5go/SbMP0vVOm8I/AAAAAAAAAAM/vH8Ea4IIQMo/s72-c/jefe_empleados.jpeg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-3845760905224046029</id><published>2009-03-27T06:52:00.000-07:00</published><updated>2009-03-30T05:15:34.351-07:00</updated><title type='text'>FISL 10 - Edicion Especial -</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.fisl.org.br/10/www/"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 180px; height: 150px;" src="http://www.fisl.org.br/10/www/files/banners/rectangle180x150.png" alt="" border="0" /&gt;&lt;/a&gt;Se está acercando uno de los eventos de Software Libre más grandes del mundo, la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;decima&lt;/span&gt; edición del &lt;span style="font-weight: bold;"&gt;"&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Fórum&lt;/span&gt; Internacional de Software &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Livre&lt;/span&gt;" - &lt;a href="http://www.fisl.org.br/10/www/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;FISL&lt;/span&gt; 10&lt;/a&gt; -&lt;/span&gt;&lt;br /&gt;Algunos de los &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;panelista&lt;/span&gt; que pasaron por &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;FISL&lt;/span&gt; fueron &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Ian&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Murdock&lt;/span&gt; -Debian - ,  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Rasmus&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Lerdorf&lt;/span&gt;  -&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;PHP&lt;/span&gt;-, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Richard&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Stallman&lt;/span&gt; -&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;FSF&lt;/span&gt;- , &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Eric&lt;/span&gt; S. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Raymond&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Jon&lt;/span&gt; “&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;maddog&lt;/span&gt;” &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Hall&lt;/span&gt; -Linux.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;org&lt;/span&gt;-&lt;br /&gt;Esta &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;edicion&lt;/span&gt; Especial  se realizara del 24 al 27 de junio de 2009, en Porto Alegre, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;Rio&lt;/span&gt; Grande do &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;Sul&lt;/span&gt;, Brasil.&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;SQLite&lt;/span&gt; Latino no se &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;podia&lt;/span&gt; quedar fuera de este importante evento, por ello invitamos a la comunidad a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_25"&gt;visitar&lt;/span&gt; el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;web&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;site&lt;/span&gt; del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;FISL&lt;/span&gt; , &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;a traves&lt;/span&gt; del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;banner&lt;/span&gt; que esta en el sitio..&lt;br /&gt;un Abrazo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;Gerardo&lt;/span&gt; Antonio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-3845760905224046029?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3845760905224046029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3845760905224046029'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2009/03/fisl-10-edicion-especial.html' title='FISL 10 - Edicion Especial -'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-2648775120784630259</id><published>2009-02-23T14:32:00.000-08:00</published><updated>2009-02-23T19:04:22.794-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prensa'/><title type='text'>Adelantos del nuevo e-Book de SQLite por El Tribuno</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uJwbWnvfNFg/SaNjNyKckNI/AAAAAAAAAWc/JPe0ob00VhU/s1600-h/mail.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 306px; height: 44px;" src="http://1.bp.blogspot.com/_uJwbWnvfNFg/SaNjNyKckNI/AAAAAAAAAWc/JPe0ob00VhU/s320/mail.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5306193874427613394" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Hoy 23 de Febrero del 2009&lt;/span&gt; apareció en la portada de uno de los más reconocidos periódicos reconocidos en el noroeste Argentino como es &lt;a href="http://eltribuno.info/verContenido.php?id=54855&amp;amp;sT=0&amp;amp;fPub=23/02/2009"&gt;&lt;span style="font-weight: bold;"&gt;El Tribuno&lt;/span&gt;&lt;/a&gt;, una entrevista al sr. &lt;span style="font-weight: bold;"&gt;Gerardo Cabero&lt;/span&gt;, integrante fundador de la comunidad SQLite – Latino, dando a conocer algunos adelantos de los proyectos que ya están encaminados y en edición para toda la comunidad, se trata de un eBook para conocer SQLite a fondo, llamado &lt;span style="font-weight: bold;"&gt;"La Cocina de SQLite"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Desde ya están invitados a leer &lt;a href="http://eltribuno.info/verContenido.php?id=54855&amp;amp;sT=0&amp;amp;fPub=23/02/2009"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;esta entrevista&lt;/span&gt;&lt;/a&gt;, sin dejar de agradecer tanto al Periódico &lt;a href="http://eltribuno.info/index.php"&gt;El Tribuno&lt;/a&gt; como así también a su periodista &lt;a href="http://friquiworld.blogspot.com/"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Fernando Quiros&lt;/span&gt;&lt;/a&gt;, por el apoyo a este proyecto y la difusión del mismo.&lt;br /&gt;&lt;br /&gt;Para más información les dejamos el blog de &lt;a href="http://friquiworld.blogspot.com/2009/02/la-cocina-de-sqlite.html"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Fernando Quiros&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; contando más detalles&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-2648775120784630259?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2648775120784630259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2648775120784630259'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2009/02/adelantos-del-nuevo-e-book-de-sqlite.html' title='Adelantos del nuevo e-Book de SQLite por El Tribuno'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uJwbWnvfNFg/SaNjNyKckNI/AAAAAAAAAWc/JPe0ob00VhU/s72-c/mail.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7652304201021819476</id><published>2009-02-16T14:08:00.000-08:00</published><updated>2009-02-18T05:00:26.010-08:00</updated><title type='text'>+ colaboradores</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.gilgutierrez.com.mx/02/archivos/fotos/BIENVENIDO.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 243px; height: 228px;" src="http://www.gilgutierrez.com.mx/02/archivos/fotos/BIENVENIDO.jpg" alt="" border="0" /&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-weight: bold;font-family:Verdana;font-size:85%;"  &gt;Bienvenido, Welcome, Welkon, Benvenuto, Witamy, ect..&lt;/span&gt;&lt;/a&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:Verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:Verdana;font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;En esta oportunidad queremos anunciar al llegada de dos nuevos colaboradores que pasana a formara parte de la comunidad asi como tambien darle la bienvenida formal a Marcos Mansilla.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:Verdana;font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;@&lt;span class="Apple-style-span" style="color: rgb(128, 128, 128); font-weight: bold; line-height: 16px; white-space: pre;font-family:'Lucida Grande';" &gt;Marcos Mansilla  (Marcos Mansilla - Arg)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:Verdana;font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;@&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(128, 128, 128); font-weight: bold; line-height: 16px; white-space: pre;font-family:'Lucida Grande';" &gt;&lt;span class="Apple-style-span"&gt;Monica Galarza&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-weight: normal; line-height: normal; white-space: normal;font-family:Verdana;" &gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:Verdana;font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(128, 128, 128); font-weight: bold; line-height: 16px; white-space: pre;font-family:'Lucida Grande';" &gt; (monica- Arg)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:Verdana;font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;@&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(128, 128, 128); font-weight: bold; line-height: 16px; white-space: pre;font-family:'Lucida Grande';" &gt;&lt;span class="Apple-style-span"&gt;Alejandro Sandoval &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:Verdana;font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(128, 128, 128); font-weight: bold; line-height: 16px; white-space: pre;font-family:'Lucida Grande';" &gt; (estepario - Chile)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Un Fuerte Abrazo A TODOS!!! BIENVENIDOS!!!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:Verdana;font-size:13px;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:Verdana;font-size:13px;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:Verdana;font-size:12px;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7652304201021819476?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7652304201021819476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7652304201021819476'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2009/02/colaboradores.html' title='+ colaboradores'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-6881870663239391656</id><published>2009-02-14T13:11:00.000-08:00</published><updated>2009-02-16T05:03:58.609-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prensa'/><title type='text'>Entrevista a Daniel Maldonado de SQLite-Latino</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mcshuibhne.files.wordpress.com/2008/08/periodista.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 218px; height: 199px;" src="http://mcshuibhne.files.wordpress.com/2008/08/periodista.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Esta entrevista fue realizada hace algun tiempo, por el Sr. Franco Rivero de la Revista TuxInfo .&lt;br /&gt;www.tuxinfo.com.ar , desde ya Agrademos que nos dejen publicar dicha Entrevista....&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify; font-weight: bold;"&gt;Estuvimos con el Sr. Daniel Maldonado, quien junto con Gerardo Cabero están  llevando adelante este interesante proyecto desde hace unos meses.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Franco Rivero: FR&lt;br /&gt;Daniel Maldonado:  DM&lt;br /&gt;&lt;br /&gt;FR:  &lt;span style="font-weight: bold;"&gt;Daniel, contanos un poco  de que se trata este nuevo proyecto &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DM:SQLite-Latino trata de  dar a conocer esta excelente herramienta para el desarrollo de aplicaciones ya sea  consideradas de complejidad media como así también los de grandes proyectos o  sistemas.&lt;br /&gt;Queremos hacer llegar a toda la gente de habla hispana la información referida a SQLite,&lt;br /&gt;con respecto a sus características, ventajas, compatibilidad  con diversos Lenguajes de Programación  y demás curiosidades de lo que hemos  denominado como el Pseudo Motor de Bases de Datos SQLite.&lt;br /&gt;&lt;br /&gt;FR:&lt;span style="font-weight: bold;"&gt;Para los que no saben de que hablamos ¿Qué es SQLite?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DM:: Según D. Richard Hipp )creador de SQLite(, SQLite son librerías escritas en C&lt;br /&gt;que implementa un motor de base de datos para SQL92 empotrable, Wikipedia también comparte y adopta este concepto, pero según el organizador de&lt;br /&gt;esta comunidad )Gerardo Antonio Cabero(, SQLite permite dar otro tipo de enfoque a las bases de datos, y dejar de  ser librería para convertirse en Pseudo&lt;br /&gt;Motor - Aparenta ser un motor pero no lo  es  un nuevo concepto tomado como válido y que lo utilizamos como premisa  para la Comunidad SQLite - Latino.&lt;br /&gt;En tal sentido, Gerardo Antonio Cabero dice:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;“Siempre he pensado que hay que dar un nuevo enfoque al desarrollo de las Base de datos, dejando a un lado ese carácter de librería para convertirse en algo más complejo como un Pseudo Motor de Bases de Datos.”  Te comento que yo he intentado hablar con D. Richard Hipp y le he comentado de las caracterásticas de SQLite y que el da un nuevo enfoque al desarrollo de las bases datos a través de lo que hemos denominado Pseudo Motor . pero no e Tenido Exito...&lt;/span&gt;&lt;br /&gt;SQLite tiene varias funcionalidades, que se entiende como las de un Motor de Base de datos Ejemplo, y con la carencias de otras. Tal es el Caso de La&lt;br /&gt;integridad referencial. (La que actualmente se puede Simular)&lt;br /&gt;&lt;br /&gt;FR: ¿Cuáles son las expectativas del proyecto SQLite Latino América a corto y a largo plazo?&lt;br /&gt;DM  Básicamente las primeras expectativas de este proyecto es dar a conocer las cualidades más destacadas de SQLite a toda Latino América y de algún modo captar su atención y alentarlos a probar este nuevo concepto para el desarrollo no sólo de prototipos de  sistemas sino también de sistemas de alta  complejidad.&lt;br /&gt;Además, dar un espacio para que los  interesados formulen sus preguntas, dudas y de algún modo generar un espacio de debate de usuarios expertos  como así también de novatos en un plano .Por eso  los invitamos a que nos visiten y nos acompañen a aprender junto a ustedes.&lt;br /&gt;&lt;br /&gt;FR: ¿Quienes llevan adelante el proyecto y con que idea se reunieron a trabajar?&lt;br /&gt;DM:  El proyecto comenzó de la mano de  Gerardo, al comienzo de todo lo tenía un  poco bandonado, hasta que nos conocimos en una charla que el dió, sobre SQLite en Jujuy en las II Jornadas de Software Libre y luego al volver a tener contacto nuevamente en las II Jornadas de Software Libre en Salta. De ese modo realizó, como Gerardo la llamó, “la propuesta Indecente” de ser un administrador y formar juntos y con más fuerza la Comunidad de SQLite Latino y de algún modo continuar colaborando con la comunidad de Software Libre.&lt;br /&gt;&lt;br /&gt;FR: Por último, ¿Cómo pueden colaborar los interesados?&lt;br /&gt;DM: Bueno a todos los interesados desde ya le agradecemos sus visitas a la comunidad http://sqlite-latino.blogspot.com, Otro modo de colaborar con este fin es ayudando a traducir la documentación, enviarnos sus Review de SQLite y el comportamiento con otros lenguajes de programación y fomentando el uso de SQLite en el desarrollo de sistemas.&lt;br /&gt;&lt;br /&gt;Desde ya agradecemos a Daniel por su tiempo, y queremos ofrecerles desde Tuxinfo a todos los proyectos independientes un espacio para que puedan difundir su trabajo y sus pensamientos, desde nuestra revista alentamos los proyectos que tanto bien hacen a nuestra comunidad y sepan que aquí tienen un espacio para la difusión....&lt;br /&gt;Realizado por : Franco Rivero&lt;br /&gt;Revista: TuxInfo www.tuxinfo.com.ar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-6881870663239391656?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6881870663239391656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6881870663239391656'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2009/02/entrevista-daniel-maldonado-de-sqlite.html' title='Entrevista a Daniel Maldonado de SQLite-Latino'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7529662067300661579</id><published>2009-01-25T18:31:00.000-08:00</published><updated>2009-02-16T05:05:25.551-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prensa'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Triggers -IR-'/><title type='text'>Uso de SQLite por Alejandro Sandoval</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uJwbWnvfNFg/SX0o4-Gy3nI/AAAAAAAAAVs/J_P_tSk_hrU/s1600-h/estrechar%2520manos.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 190px;" src="http://1.bp.blogspot.com/_uJwbWnvfNFg/SX0o4-Gy3nI/AAAAAAAAAVs/J_P_tSk_hrU/s320/estrechar%2520manos.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5295433696066854514" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Hola Comunidad de SQLite Latino, Feliz comienzo de año 2009. hace unos dias El Sr. Alejandro Sandoval nos envio un articulo relacionado con SQLite. Agradecemos su aporte, Asi tambien todo estan invitados a participar de SQLite Latino&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Espero que sea de su agradao. Hasta la proxima&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  font-weight: bold; white-space: pre; font-family:'Lucida Grande';font-size:48px;"&gt;&lt;span class="Apple-style-span" style=" ;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Uso de SQLite&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;SQLite es un pequeño 'sistema' de base de datos: es una biblioteca que sobre un archivo almacena el esquema de la base de datos y los datos propiamente tal. En términos generales presenta un buen rendimiento, y está aconsejada para quienes requieren almacenar un volumen medio de datos en sus aplicaciones, utilizando un esquema relacional.En el caso de querer incluir la API SQLite en tu proyecto de programación, puedes incluir en tu programa C/C++ a sqlite.h, compilar a sqlite.c y listo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Dentro de lo que podemos llamar una desventaja de SQLite es que no implementa la integridad referencial, es decir, no disponemos de claves foráneas (puedes declararlas, pero el intérprete ignorará tu declaración). De todas formas, SQLite si implementa triggers, así que hay algunas formas de implementar la integridad referencial de esa forma.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;¿Un ejemplo? Pero con mucho gusto... de todas maneras, el ejemplo está pensado solo para mostrar las características de SQLite, así que no esperes un buen diseño ni nada por el estilo...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Por ejemplo, imagínese una pequeña empresa de buses que requiere almacenar información acerca de sus viajes. Para ello, supongamos que tenemos la tabla buses (con información de los buses), viaje (con los datos de un viaje) y pasajero (con los datos de un pasajero). Una propuesta entonces podría ser la siguiente:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;create table buses(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  id integer primary key not null autoincrement,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  matricula text not null,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  ano integer not null,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  capacidad integer not null); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;create table pasajero(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  cedula text primary key not null,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  nacimiento date not null);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;create table viaje(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  id_bus integer not null,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  cedula text not null);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Bueno, hay algunas cosas por explicar de acá:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;SQLite implementa el incremento automático de un campo (autoincrement), el que perfectamente pude indicarse para el primary key.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Las claves foráneas, como ya mencioné, no están implementadas aún en SQLite, así que no las agrego.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;La primary key de la tabla viaje será su OID.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;SQLite, para almacenar una tupla en una tabla, utiliza el sistema de OID, es decir, asigna secretamente un identificador para cada tupla, que facilita su búsqueda en el arbol B (la estructura de datos usada por SQLite para almacenar los datos en archivo). No necesito declarar el OID, pero puedo consultarlo en cualquier tabla; pronto un ejemplo de eso.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Ahora, insertemos algunos datos, para hacer las pruebas.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;insert into buses values(null, 'ABCD-01', 2008, 40);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;insert into buses values(null, 'JANO-05', 2007, 27);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;insert into buses values(null, 'INSQ-35', 2007, 20);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;insert into pasajero values('123ASD-K', 1980-05-23);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;insert into pasajero values('237QSD-3', 1970-03-28);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;insert into pasajero values('135QTW-3', 1989-08-05);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Con esos datos, podemos ver en acción el sistema de los OID:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;sqlite&gt;select oid,* from buses;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;1|1|ABCD-01|2008|40&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;2|2|JANO-05|2007|27&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;3|3|INSQ-35|2007|20&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;sqlite&gt;select oid,* from pasajero;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;1|123ASD-K|1980-05-23&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;2|135QTW-3|1989-08-05&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;3|237QSD-3|1970-03-28&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Puede parecer extraño lo que ocurre con la tabla buses, puesto que ya existe su primary key, y esta se autoincrementa. Bien, pues de todas formas se genera un OID... pero cuando se define una primary key autoincrementable de tipo integer, el OID tendrá el mismo valor que dicha clave. No ocurre lo mismo en la tabla pasajero, puesto que su primary key es un texto, y no un entero. Nota también que en los campos que se autoincrementan, el siguiente valor se genera insertando un null.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Gracias a esta característica es que he definido la tabla viajes sin primary key: confío en el OID (lo que no es recomendado, por cierto).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Ahora, la parte artística: ¿y las claves foraneas? Como mencioné, para eso disponemos de los triggers...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;create trigger fki_viaje_buses&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;before insert on viaje&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;for each row&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;begin&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  select raise(rollback, 'Inserción en viaje viola restricción fki_viaje_buses')&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  where (select id from buses where id=new.id_bus) is null;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Luego de eso, intentemos insertar un viaje para un bus no válido:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;sqlite&gt; insert into viaje values(5, '123ASD-K');&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;SQL error: Inserción en viaje viola restricción fki_viaje_buses&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;El trigger para la actualización (update) es exactamente igual, pero en el caso de la eliminación tenemos un problema: si quiero eliminar un bus ¿qué hago con los viajes? Por como se definió la base de datos, no se pueden eliminar buses o pasajeros mientras hayan viajes, así que manos al trigger:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;create trigger fkd_viaje buses&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;before delete on buses&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;for each row&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  begin&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;    select raise(rollback, 'No se puede eliminar bus')&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;    where (select id_bus from viaje where old.id = id_bus) is not null;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Ahora, si yo he insertado los siguientes datos de viaje&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;insert into viaje values(1, '135QTW-3');&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;insert into viaje values(1, '123ASD-&lt;/span&gt;K');&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;el trigger impedirá que eliminemos un bus, lo que generaría un estado inconsistente en la base de datos&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;sqlite&gt; delete from buses where id = 1;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;SQL Error: No se puede eliminar bus&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Como se puede apreciar, SQLite es una alternativa interesante cuando se necesita un acceso a datos rápido y sencillo. Aunque me parece que SQLite es muy bueno, no me atrevería aún a usarlo en un entorno más de producción... aunque en la medida que lo voy usando, más me convence.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  white-space: pre; font-family:'Lucida Grande';"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Autor: Alejandro Sandoval&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  white-space: pre; font-family:'Lucida Grande';"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Urls :  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://esteparioprogramador.bligoo.com &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  white-space: pre;font-family:'Lucida Grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  white-space: pre;font-family:'Lucida Grande';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;:::NOTA COMPLEMENTARIA:::&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="border-collapse: collapse;   -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family:Arial;"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Basándose en el ejemplo, el análisis es el siguiente: viaje es una tabla intermedia para la relación de muchos a muchos entre buses y pasajero. Por lo tanto, y siendo los campos de la tabla viaje claves foráneas, no puedo permitir la inserción de un viaje si el bus o el pasajero no existen: si lo permitiera, no tendría integridad referencial, dejando inconsistente la base de datos.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Por esa razón, se crean los triggers, y esa es la lógica que están siguiendo en este caso. Despedacemos el primer trigger pa que quede más claro:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;create trigger fki_viaje_buses : &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Con eso, creo el famosillo trigger, y su nombre es fki_viaje_buses&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;before insert on viaje : &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" font-weight: normal; "&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Esto nos asegura la pega: el trigger será ejecutado &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;antes&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt; de insertar en la tabla viaje. Eso te garantiza que la inserción no generará un estado inconsistente.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;for each row : &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Está diciendo... puro traducir: repetir el trigger para cada fila insertada. Lo que se va a ejecutar está dentro del begin - end, por si acaso.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style=" font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;select raise(rollback, 'Inserción en viaje viola restricción fki_viaje_buses') &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt; where (select id from buses where id=new.id_bus) is null;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Aquí está el detallito: le estamos diciendo que lance un error (y ejecute un rollback) cuando se cumpla la condición del where, es decir, si no hay ninguna tupla en la tabla buses que tenga un ID igual al ID del bus que está en la nueva tupla de viaje (la variable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt; se ocupa para designar &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;a la tupla que se intenta insertar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;). Como ves, es exáctamente lo que definimos en palabras antes de comenzar el análisis del problema.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;La actualización es la misma situación, puesto que es en el fondo una inserción. De hecho, la única diferencia entre ambos triggers son los mensajes y el nombre.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;La eliminación es ligeramente diferente, y pensemos en el caso de eliminar un bus. ¿Qué haré con los viajes asociados?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;Las soluciones ahí son:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;li style="list-style-image: url(http://bligoo.com/media/bligoo/newthemes/Water%20Energy/waterenergy-li-icon.gif); list-style-position: inside; list-style-type: none; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;on delete set null&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt; poner los id_bus de viaje en null (lo que en una tabla intermedia no es factible, puesto que las FK son PK además).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="list-style-image: url(http://bligoo.com/media/bligoo/newthemes/Water%20Energy/waterenergy-li-icon.gif); list-style-position: inside; list-style-type: none; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;on delete cascade&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;: si elimino un bus, elimino todos sus viajes.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="list-style-image: url(http://bligoo.com/media/bligoo/newthemes/Water%20Energy/waterenergy-li-icon.gif); list-style-position: inside; list-style-type: none; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;on delete restrict&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt; no puedo eliminar un bus mientras hayan viajes asociados.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;El trigger implementado al respecto sigue la última filosofía: no te dejará eliminar un bus mientras hayan viajes registrados con ese bus. En ese esquema, la lógica es al revés: hago el rollback si HAY viajes con el mismo bus_id que tiene old.id (como imaginarás, &lt;/span&gt;&lt;/span&gt;&lt;b style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;old&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;indica la tupla a eliminar).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana;"&gt;El tema de los triggers para simular las FK no es tan complejo... pero igual hay que dedicarle su tiempo (en mi caso, significó aprender triggers primero, porque era materia nueva). Aún así, creo que no me demoré mucho en aprender lo necesario.Espero que hayas quedado más claro. Si hay más dudas, pregunta nomás: yo feliz de ayudar dentro de lo que pueda.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7529662067300661579?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7529662067300661579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7529662067300661579'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2009/01/uso-de-sqlite-por-alejandro-sandoval.html' title='Uso de SQLite por Alejandro Sandoval'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uJwbWnvfNFg/SX0o4-Gy3nI/AAAAAAAAAVs/J_P_tSk_hrU/s72-c/estrechar%2520manos.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-2092272802387073102</id><published>2008-12-14T19:25:00.000-08:00</published><updated>2008-12-14T19:29:13.304-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Gambas'/><title type='text'>Acceso a Bases de Datos SQLite desde Gambas</title><content type='html'>Nuevamente volvemos a sumar más documentación integrando el pseudo motor de Bases de Datos SQLite y un lenguaje de programación visual que día a día esta atrapando a más programadores de plataformas libres como es Gambas.&lt;br /&gt;&lt;br /&gt;En esta oportunidad les voy a dejar el enlace de la revista digital Tuxinfo Nº12 en la cual &lt;span style="font-weight: bold;"&gt;Pablo Mileti&lt;/span&gt; explica en 8 páginas como acceder y realizar consultas y actualizaciones integrando esta dos herramientas SQLite y Gambas y de alguna manera podemos complementar la información con lo que &lt;a href="http://sqlite-latino.blogspot.com/2008/11/sqlite-y-gambas.html"&gt;Marcos&lt;/a&gt; hace unas semanas atrás mostraba.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://media.share.ovi.com/m1/large/0529/8262765d455942beb07ced34c83d8000.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 361px; height: 512px;" src="http://media.share.ovi.com/m1/large/0529/8262765d455942beb07ced34c83d8000.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://infosertec.loquefaltaba.com/tuxinfo12.pdf"&gt;&lt;span style="font-size:130%;"&gt;Descargar Tuxinfo Nº12&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-2092272802387073102?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2092272802387073102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2092272802387073102'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/12/acceso-bases-de-datos-sqlite-desde.html' title='Acceso a Bases de Datos SQLite desde Gambas'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-3719744767876237110</id><published>2008-12-14T17:57:00.000-08:00</published><updated>2009-01-19T11:53:09.793-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Practica y Ejemplos'/><title type='text'>Integridad Referencial</title><content type='html'>&lt;div style="text-align: justify;"&gt;La integridad referencial es una propiedad &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.speakerscorner.cl/wp-content/uploads/2008/01/excelencia-integridad.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 298px; height: 163px;" src="http://www.speakerscorner.cl/wp-content/uploads/2008/01/excelencia-integridad.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;deseable en las &lt;a href="http://es.wikipedia.org/wiki/Base_de_datos" title="Base de datos"&gt;base&lt;/a&gt;&lt;a href="http://es.wikipedia.org/wiki/Base_de_datos" title="Base de datos"&gt;s de datos&lt;/a&gt;. Gracias a la integridad referencial se garantiza que una entidad (fila o &lt;a href="http://es.wikipedia.org/wiki/Registro_%28base_de_datos%29" title="Registro (base de datos)"&gt;registro&lt;/a&gt;) siempre se relaciona con otras entidades válidas, es decir, que existen en la base de datos. Implica que en todo momento dichos datos sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones mal resueltas.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Como es sabido por la los desarrolladores de SQLITE , la integridad referencial no esta implementada de forma mativa pero es posible realizar la emulacion de la misma atravez de los trigger.&lt;br /&gt;Extraido de la Wikipedia : www.wikipedia.org&lt;br /&gt;&lt;/div&gt;El Siguiente Ejemplo fue extradido de la wiki del "El Server" - http://www.elserver.com/wiki/&lt;br /&gt;&lt;pre style="font-family: georgia;"&gt;=========================================================&lt;br /&gt;La tabla PELICULAS tiene dependencia de otras dos: GENERO y  SOPORTE.&lt;br /&gt;&lt;br /&gt;Los triggers antes de insert y antes de update on Peliculas tienen en cuenta estas dos dependencias.&lt;br /&gt;Para antes de delete hacen falta dos triggers: uno en Genero y otro en Soporte.&lt;br /&gt;Estos triggers impiden que se pueda borrar un genero o un soporte, si hay peliculas que lo están&lt;br /&gt;usando.&lt;br /&gt;El código deja claro lo que se haría si la dependencia fuera de más tablas,sólo habría que añadir más OR  y los triggers on delete.&lt;br /&gt;Si la dependencia fuera solo de una tabla,se quitaría un OR y el delete que sobre.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;CREATE TABLE [genero] (&lt;br /&gt;[id_gen] INTEGER  PRIMARY KEY NOT NULL,&lt;br /&gt;[nombreGen] VARCHAR(40) UNIQUE NOT NULL&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;CREATE TABLE [soporte] (&lt;br /&gt;[id_sop] INTEGER  NOT NULL PRIMARY KEY,&lt;br /&gt;[nombreSop] VARCHAR(20)  UNIQUE NOT NULL&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;CREATE TABLE [peliculas] (&lt;br /&gt;[id_pel] INTEGER  NOT NULL PRIMARY KEY,&lt;br /&gt;[id_genero] INTEGER  NOT NULL,&lt;br /&gt;[id_soporte] INTEGER  NOT NULL,&lt;br /&gt;[nombrePel] VARCHAR(40)  NOT NULL&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;CREATE TRIGGER film_pel_in before insert on peliculas&lt;br /&gt;for each row&lt;br /&gt;begin&lt;br /&gt;select case&lt;br /&gt;when&lt;br /&gt;(&lt;br /&gt;(new.id_soporte is not null)&lt;br /&gt;and&lt;br /&gt;(new.id_genero is not null)&lt;br /&gt;and&lt;br /&gt;(&lt;br /&gt;((select id_sop from soporte where&lt;br /&gt; id_sop =new.id_soporte) is null)&lt;br /&gt;or&lt;br /&gt;((select id_gen from genero where&lt;br /&gt;  id_gen = new.id_genero) is null)&lt;br /&gt;               )&lt;br /&gt;)&lt;br /&gt;then raise(abort,'violacion integridad')&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;CREATE TRIGGER film_pel_up before update on peliculas&lt;br /&gt;for each row begin&lt;br /&gt;select case&lt;br /&gt;when&lt;br /&gt;(&lt;br /&gt;((select id_sop from soporte where&lt;br /&gt;id_sop = new.id_soporte) is null)&lt;br /&gt;or&lt;br /&gt;((select id_gen from genero where&lt;br /&gt;id_gen = new.id_genero) is null)&lt;br /&gt;)&lt;br /&gt;then raise(abort,'violacion integridad')&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;CREATE TRIGGER film_sop_de before delete on soporte&lt;br /&gt;&lt;br /&gt;for each row begin&lt;br /&gt;select case&lt;br /&gt;when&lt;br /&gt;((select id_soporte from peliculas&lt;br /&gt;where id_soporte = old.id_sop) is not null)&lt;br /&gt;then raise(abort,'violacion integridad')&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;CREATE TRIGGER film_gen_de before delete on genero&lt;br /&gt;for each row begin&lt;br /&gt;select case&lt;br /&gt;when&lt;br /&gt;((select id_genero from peliculas&lt;br /&gt;where id_genero = old.id_gen) is not null)&lt;br /&gt;then raise(abort,'violacion integridad')&lt;br /&gt;end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-3719744767876237110?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3719744767876237110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3719744767876237110'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/12/integridad-referencial.html' title='Integridad Referencial'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8992343239184972471</id><published>2008-12-01T05:05:00.000-08:00</published><updated>2008-12-01T05:16:39.786-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y C'/><title type='text'>Pequeña Consulta en SQLite3 utilizando el lenguaje C</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.comprawifi.com/blog/wp-content/uploads/2006/05/cppcover.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 250px; height: 200px;" src="http://www.comprawifi.com/blog/wp-content/uploads/2006/05/cppcover.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Hace algunas semanas hemos recivido , de parte de uno de los desarrolladores "Ricardo D. Quiroga" de la comunidad un ejemplo de como implementar SQLite en el Languaje C. A Quien Agradesemos el Envio de este miniComo..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Basado en el ejemplo posteado en http://www.sqlite.org/quickstart.html&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Autor: Ricardo D. Quiroga -&gt; l2radamanthys@gmail.com&lt;/div&gt;&lt;div style="text-align: left;"&gt;El codigo fuente posteado aqui esta bajo licencia GPL2 (license.txt)&lt;/div&gt;&lt;div&gt;Codigo fuente Probado usando el Dev-C++ y el Compilador GCC &lt;/div&gt;&lt;div&gt;#include &lt;std_disclaimer.h&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/std_disclaimer.h&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El autor no se hace responsable del daño que el mismo pudiese causar directa o indirectamente a tu computadora ,novia,, perro, Y/O SUEGRA ,ect. use el mismo bajo su propia responsabilidad.&lt;/div&gt;&lt;div&gt;Se Incluyen los siguientes archivos:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;* libreria sqlite&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;- sqlite3.h&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;- libsqlite3.a&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;- sqlite3.dll&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;* codigo fuente&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;- main.c (Codigo fuente)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;- main.c.html (vercion del codigo fuente para visualizar como html)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;- test1.dev  (archivo de proyecto (solo para Dev-C++) )&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Aunque fue el Codigo fue probado con el Dev-C++ usando el GCC el mismo tambien deveria poderse compilar usando cualquier otro ya que el mismo solo fue escrito en ANSI C&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sobre la BD:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Crear una BD con el nombre 'test.db'(o cambiar el nombre de la bd en el codigo fuente) a la cual luego se le agregara una tabla llamarla 'table1' y colocarle los camposo que ud eligan&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Que hace el programa:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Conecxta una base de datos a SQLite realiza una pequeña consulta con SQLite en este ejemplo la consulta es la siguiente "select * from table1;" muestra los resultados en pantalla y cierra la bd.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;/*****************************************************************************************&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;                &lt;/span&gt;      &lt;/div&gt;&lt;div&gt;  ------  Una Simple consulta en SQLITE Usando C  ------&lt;span class="Apple-tab-span" style="white-space:pre"&gt;       &lt;/span&gt;       &lt;/div&gt;&lt;div&gt;         Probado con el Dev-C++ Usando el  GCC&lt;span class="Apple-tab-span" style="white-space:pre"&gt;         &lt;/span&gt;       &lt;/div&gt;&lt;div&gt;   Por Ricardo D. Quiroga  - l2radamanthys@gmail.com&lt;span class="Apple-tab-span" style="white-space:pre"&gt;        &lt;/span&gt;       &lt;/div&gt;&lt;div&gt;   Este ejemplo esta basado en el codigo posteado en http://www.sqlite.org/quickstart.html&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;       &lt;/div&gt;&lt;div&gt;      Quitando los Comentarios son como 25 lineas&lt;span class="Apple-tab-span" style="white-space:pre"&gt;        &lt;/span&gt;       &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*****************************************************************************************/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#include &lt;cstdlib&gt;&lt;/cstdlib&gt;&lt;/div&gt;&lt;div&gt;#include &lt;cstdio&gt;&lt;/cstdio&gt;&lt;/div&gt;&lt;div&gt;#include &lt;sqlite3.h&gt; //libreria para trabajar con SQLite3&lt;/sqlite3.h&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static int callback(void *NotUsed, int argc, char **argv, char **azColName){&lt;/div&gt;&lt;div&gt;    for( int i=0; i&lt;argc;&gt;&lt;div&gt;        printf("%s ", argv[i] ? argv[i] : "NULL");&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;    printf("\n");&lt;/div&gt;&lt;div&gt;    return 0;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;int main(int argc, char **argv) {&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    sqlite3 *db;    //variable que hara referencia a la Base de Datos que utilzaremos&lt;/div&gt;&lt;div&gt;    char *zErrMsg;  //string que almacenara el mensaje de error&lt;/div&gt;&lt;div&gt;    int rc;         //amacenara el resultado del llamado de las funciones de sqlite3.h&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;  /*****************************************************************************************&lt;/div&gt;&lt;div&gt;    Abrimos la base de Datos en nuestro caso la BD se llamara 'test.db'&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    int sqlite3_open(&lt;/div&gt;&lt;div&gt;        const char *filename,   Nombre de la Base de Datos (UTF-8)&lt;/div&gt;&lt;div&gt;        sqlite3 **ppDb          Salida SQLite db handle&lt;/div&gt;&lt;div&gt;    );&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;    En caso de error la funcion sqlite3_open() devolvera un valor distinto de 0&lt;/div&gt;&lt;div&gt;    *****************************************************************************************/&lt;/div&gt;&lt;div&gt;    rc = sqlite3_open("test.db", &amp;amp;db);&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt; /*****************************************************************************************&lt;/div&gt;&lt;div&gt;    Mostramos el mensaje de error en caso de que no se pudiera abrir la Base de Datos&lt;/div&gt;&lt;div&gt;    *****************************************************************************************/&lt;/div&gt;&lt;div&gt;    if (rc) {&lt;/div&gt;&lt;div&gt;        fprintf(stderr, "No se pudo Abrir la base de Datos: %s\n", sqlite3_errmsg(db));&lt;/div&gt;&lt;div&gt;        sqlite3_close(db);&lt;/div&gt;&lt;div&gt;        exit(1);&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;  /*****************************************************************************************&lt;/div&gt;&lt;div style="text-align: justify;"&gt;    Strings que alamcenaran las consulta que relizamos en la que Copiaremos la instrucion de&lt;/div&gt;&lt;div style="text-align: justify;"&gt;    SQLite que queremos ejecutar en la variable 'instrucion' en este caso una simple consulta&lt;/div&gt;&lt;div style="text-align: justify;"&gt;    a la Base de Datos&lt;/div&gt;&lt;div&gt;    *****************************************************************************************/&lt;/div&gt;&lt;div&gt;    char instrucion[1024]="";&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;sprintf(instrucion, "SELECT * FROM table1;");&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; /*****************************************************************************************&lt;/div&gt;&lt;div&gt;    Ejecutamos la instrucion alamcenada en el string instrucion en SQLite3&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;    Esplicacion mas a fondo de la funcion 'sqlite3_exec()'&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;    int sqlite3_exec(&lt;/div&gt;&lt;div&gt;        sqlite3*,                                  Base de Datos Abierta&lt;/div&gt;&lt;div&gt;        const char *sql,                           Instrucion de SQl a evaluar&lt;/div&gt;&lt;div&gt;        int (*callback)(void*,int,char**,char**),  funcion (Callback) ver arrina&lt;/div&gt;&lt;div&gt;        void *,                                    1er agumento de la funcion Callback&lt;/div&gt;&lt;div&gt;        char **errmsg                              variable de mensaje de error (1)&lt;/div&gt;&lt;div&gt;    );&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;    si ocurrio un error durante la ejecucion de la instrucion la la funcion devolvera un valor&lt;/div&gt;&lt;div&gt;    diferente de la constante SQLITE_OK y el tipo de error sera devuelto en la variable errmsg(1)&lt;/div&gt;&lt;div&gt;    *****************************************************************************************/&lt;/div&gt;&lt;div&gt;    rc = sqlite3_exec(db, instrucion, callback, 0, &amp;amp;zErrMsg);&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt; /*****************************************************************************************&lt;/div&gt;&lt;div&gt;    En caso que ocurriera un error en la ejecucion de la instrucion SQL mostramos el mismo&lt;/div&gt;&lt;div&gt;    *****************************************************************************************/&lt;/div&gt;&lt;div&gt;    if ( rc!=SQLITE_OK ) &lt;/div&gt;&lt;div&gt;    {&lt;/div&gt;&lt;div&gt;        fprintf(stderr, "SQL error: %s\n", zErrMsg);&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;  /*****************************************************************************************&lt;/div&gt;&lt;div&gt;    funcion para cerrar la Base de Datos ( Sin comentarios....)&lt;/div&gt;&lt;div&gt;    *****************************************************************************************/&lt;/div&gt;&lt;div&gt;    sqlite3_close(db); &lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;    printf("\n");&lt;/div&gt;&lt;div&gt;    system("PAUSE"); //pausamos la ejecucion del programa par aque no se cierre la consola&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    return EXIT_SUCCESS;&lt;/div&gt;&lt;div&gt;} //fin del programa.....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Este programa fue desarrollado como ejemplo de uso de SQLite para SQLite-Latinoamerica &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;              &lt;/span&gt;Ricardo D. Quiroga&lt;/div&gt;&lt;/argc;&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8992343239184972471?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8992343239184972471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8992343239184972471'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/12/pequea-consulta-en-sqlite3-utilizando.html' title='Pequeña Consulta en SQLite3 utilizando el lenguaje C'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-2474719764391493061</id><published>2008-11-04T07:40:00.000-08:00</published><updated>2008-12-01T05:17:10.064-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Mono .Net'/><title type='text'>Mono + NHibernate + SQLite</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uJwbWnvfNFg/SRB0Bg0EqRI/AAAAAAAAAP8/v0H8oiqEgW4/s1600-h/mono.fire.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 232px; height: 264px;" src="http://1.bp.blogspot.com/_uJwbWnvfNFg/SRB0Bg0EqRI/AAAAAAAAAP8/v0H8oiqEgW4/s320/mono.fire.gif" alt="" id="BLOGGER_PHOTO_ID_5264835533733144850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Después de usar por tanto tiempo &lt;a href="http://www.mertner.com/confluence/display/Gentle/Home"&gt;Gentle.NET&lt;/a&gt;, un ORM que ha sido discontinuado, he decidido al fin comenzar a estudiar &lt;a href="http://www.nhibernate.org/"&gt;NHibernate&lt;/a&gt;. Los ejemplos que dan en los manuales y páginas son para Windows (con MS .NET) y SQL Server. Trabajando en GNU/Linux, hice las pruebas con &lt;a href="http://www.sqlite.org/"&gt;SQLite&lt;/a&gt;. &lt;p&gt;El problema es que el &lt;a href="http://sourceforge.net/projects/adodotnetsqlite"&gt;driver utilizado por NHibernate&lt;/a&gt; para esta base de datos utiliza un binding desactualizado. Además Mono trae una implementación mejor, que soporta el standard ADO.NET 2.0, que es &lt;a href="http://www.mono-project.com/SQL_Lite"&gt;Mono.Data.Sqlite&lt;/a&gt;, disponible &lt;a href="http://www.go-mono.com/archive/1.2.4/"&gt;a partir de la versión 1.2.4&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;El post es especialmente útil para aquellos que quieran utilizar en GNU/Linux (yo uso Ubuntu Gutsy), con Mono, NHibernate y SQLite, utilizando el binding Mono.Data.Sqlite. Si bien puede parecer esto tan fácil como seguir el &lt;a href="http://www.hibernate.org/362.html"&gt;documento QuickStart&lt;/a&gt; y cambiar las opciones correspondientes, no lo es si se intenta utilizar SQLite. Por eso, en este post no voy a explicar todas las cosas, ya que no me interesa y se pueden aprender en la documentación, sino que voy a desarrollar un ejemplo muy sencillo y mostrar cómo utilizar SQLite, ya que hay que solucionar unos problemas no muy triviales.&lt;/p&gt; &lt;p&gt;&lt;span id="more-185"&gt;&lt;/span&gt;Cabe aclarar que, si bien todavía no lo he probado, los archivos de mapeo (hbm.xml) y el schema SQL se pueden autogenerar. &lt;/p&gt;&lt;p&gt;Primero creo la tabla que almacenerá los objetos en un archivo llamado, por ejemplo, &lt;em&gt;data.db.sql&lt;/em&gt;:&lt;/p&gt; &lt;div class="dean_ch" style="white-space: nowrap; font-weight: bold;"&gt; &lt;span style="font-size:85%;"&gt;&lt;span class="kw1"&gt;DROP&lt;/span&gt; &lt;span class="kw1"&gt;TABLE&lt;/span&gt; &lt;span class="kw1"&gt;IF&lt;/span&gt; &lt;span class="kw1"&gt;EXISTS&lt;/span&gt; personas; &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kw1"&gt;CREATE&lt;/span&gt; &lt;span class="kw1"&gt;TABLE&lt;/span&gt; personas &lt;span class="br0"&gt;(&lt;/span&gt;&lt;br /&gt;   id integer &lt;span class="kw1"&gt;PRIMARY&lt;/span&gt; &lt;span class="kw1"&gt;KEY&lt;/span&gt;,&lt;br /&gt;   nombre varchar&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;20&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;,&lt;br /&gt;   apellido varchar&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;20&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;/span&gt; &lt;/p&gt;&lt;/div&gt; &lt;p&gt;Para el ejemplo utilicé la última versión de SQLite. Para crear la base de datos en el archivo &lt;em&gt;data.db&lt;/em&gt;, ejecutamos:&lt;/p&gt; &lt;div class="dean_ch" style="white-space: nowrap; font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt; $ sqlite3 data.db &lt;&gt;&lt;/div&gt; &lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;La clase de ejemplo (&lt;em&gt;Persona.cs&lt;/em&gt;):&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kw1"&gt;using&lt;/span&gt; &lt;span class="kw5"&gt;System&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kw1"&gt;namespace&lt;/span&gt; PruebaNHibernate&lt;br /&gt;&lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span class="kw1"&gt;public&lt;/span&gt; &lt;span class="kw4"&gt;class&lt;/span&gt; Persona&lt;br /&gt;   &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span class="kw1"&gt;private&lt;/span&gt; &lt;span class="kw4"&gt;int&lt;/span&gt; id;&lt;br /&gt;       &lt;span class="kw1"&gt;private&lt;/span&gt; &lt;span class="kw4"&gt;string&lt;/span&gt; nombre;&lt;br /&gt;       &lt;span class="kw1"&gt;private&lt;/span&gt; &lt;span class="kw4"&gt;string&lt;/span&gt; apellido;&lt;br /&gt;     &lt;br /&gt;       &lt;span class="kw1"&gt;public&lt;/span&gt; Persona&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;     &lt;br /&gt;       &lt;span class="kw1"&gt;public&lt;/span&gt; &lt;span class="kw4"&gt;int&lt;/span&gt; Id &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;           get &lt;span class="br0"&gt;{&lt;/span&gt; &lt;span class="kw1"&gt;return&lt;/span&gt; id; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;           set &lt;span class="br0"&gt;{&lt;/span&gt; &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;id&lt;/span&gt; = value; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;}&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;        &lt;span class="kw1"&gt;public&lt;/span&gt; &lt;span class="kw4"&gt;string&lt;/span&gt; Nombre &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;           get &lt;span class="br0"&gt;{&lt;/span&gt; &lt;span class="kw1"&gt;return&lt;/span&gt; nombre; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;           set &lt;span class="br0"&gt;{&lt;/span&gt; &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;nombre&lt;/span&gt; = value; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;         &lt;/span&gt;&lt;span style="font-weight: bold;" class="kw1"&gt;public&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;" class="kw4"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; Apellido &lt;/span&gt;&lt;span style="font-weight: bold;" class="br0"&gt;{&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;             get &lt;/span&gt;&lt;span style="font-weight: bold;" class="br0"&gt;{&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;" class="kw1"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; apellido; &lt;/span&gt;&lt;span style="font-weight: bold;" class="br0"&gt;}&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;             set &lt;/span&gt;&lt;span style="font-weight: bold;" class="br0"&gt;{&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;" class="kw1"&gt;this&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="font-weight: bold;" class="me1"&gt;apellido&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; = value; &lt;/span&gt;&lt;span style="font-weight: bold;" class="br0"&gt;}&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;         &lt;/span&gt;&lt;span style="font-weight: bold;" class="br0"&gt;}&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;     &lt;/span&gt;&lt;span style="font-weight: bold;" class="br0"&gt;}&lt;/span&gt; &lt;/span&gt; &lt;span class="br0"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Luego hay que escribir el archivo de mapeo, que es un XML. &lt;div class="dean_ch" style="white-space: nowrap; font-weight: bold;"&gt; &lt;span style="font-size:85%;"&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt; &lt;span class="re0"&gt;version&lt;/span&gt;=&lt;span class="st0"&gt;"1.0"&lt;/span&gt; &lt;span class="re0"&gt;encoding&lt;/span&gt;=&lt;span class="st0"&gt;"utf-8"&lt;/span&gt; &lt;span class="re2"&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;hibernate-mapping&gt;&lt;/hibernate-mapping&gt;&lt;/span&gt; &lt;span class="re0"&gt;xmlns&lt;/span&gt;=&lt;span class="st0"&gt;"urn:nhibernate-mapping-2.2"&lt;/span&gt;&lt;br /&gt;   &lt;span class="re0"&gt;namespace&lt;/span&gt;=&lt;span class="st0"&gt;"PruebaNHibernate"&lt;/span&gt; &lt;span class="re0"&gt;assembly&lt;/span&gt;=&lt;span class="st0"&gt;"PruebaNHibernate"&lt;/span&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;   &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;class&gt;&lt;/class&gt;&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;"Persona"&lt;/span&gt; &lt;span class="re0"&gt;table&lt;/span&gt;=&lt;span class="st0"&gt;"personas"&lt;/span&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;id&gt;&lt;/id&gt;&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;"Id"&lt;/span&gt; &lt;span class="re0"&gt;column&lt;/span&gt;=&lt;span class="st0"&gt;"id"&lt;/span&gt; &lt;span class="re0"&gt;type&lt;/span&gt;=&lt;span class="st0"&gt;"Int32"&lt;/span&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;generator&gt;&lt;/generator&gt;&lt;/span&gt; &lt;span class="re0"&gt;class&lt;/span&gt;=&lt;span class="st0"&gt;"increment"&lt;/span&gt; &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;property&gt;&lt;/property&gt;&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;"Nombre"&lt;/span&gt; &lt;span class="re0"&gt;column&lt;/span&gt;=&lt;span class="st0"&gt;"nombre"&lt;/span&gt; &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;property&gt;&lt;/property&gt;&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;"Apellido"&lt;/span&gt; &lt;span class="re0"&gt;column&lt;/span&gt;=&lt;span class="st0"&gt;"apellido"&lt;/span&gt; &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/div&gt; &lt;p&gt;Este archivo se debe agregar como recurso en MonoDevelop.&lt;/p&gt; &lt;p&gt;Luego escribimos el archivo de configuración para nuestra aplicación (&lt;em&gt;app.config&lt;/em&gt;):&lt;/p&gt; &lt;div class="dean_ch" style="white-space: nowrap;"&gt; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;&lt;span style="font-weight: bold;font-size:85%;" &gt;?xml&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt; &lt;span class="re0"&gt;version&lt;/span&gt;=&lt;span class="st0"&gt;"1.0"&lt;/span&gt; &lt;span class="re0"&gt;encoding&lt;/span&gt;=&lt;span class="st0"&gt;"utf-8"&lt;/span&gt; &lt;span class="re2"&gt;?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;br /&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;configuration&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/configuration&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;configsections&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/configsections&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;section&gt;&lt;/section&gt;&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;"nhibernate"&lt;/span&gt;&lt;br /&gt;                &lt;span class="re0"&gt;type&lt;/span&gt;=&lt;span class="st0"&gt;"System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"&lt;/span&gt; &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;   &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;nhibernate&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/nhibernate&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;add&gt;&lt;/add&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;key&lt;/span&gt;=&lt;span class="st0"&gt;"hibernate.connection.provider"&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;value&lt;/span&gt;=&lt;span class="st0"&gt;"NHibernate.Connection.DriverConnectionProvider"&lt;/span&gt;&lt;br /&gt;       &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;add&gt;&lt;/add&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;key&lt;/span&gt;=&lt;span class="st0"&gt;"hibernate.dialect"&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;value&lt;/span&gt;=&lt;span class="st0"&gt;"NHibernate.Dialect.SQLiteDialect"&lt;/span&gt;&lt;br /&gt;       &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;add&gt;&lt;/add&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;key&lt;/span&gt;=&lt;span class="st0"&gt;"hibernate.connection.driver_class"&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;value&lt;/span&gt;=&lt;span class="st0"&gt;"PruebaNHibernate.MonoDataSqliteDriver, PruebaNHibernate"&lt;/span&gt;&lt;br /&gt;       &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;add&gt;&lt;/add&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;key&lt;/span&gt;=&lt;span class="st0"&gt;"hibernate.connection.connection_string"&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;value&lt;/span&gt;=&lt;span class="st0"&gt;"Data Source=data.db,version=3"&lt;/span&gt;&lt;br /&gt;       &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;add&gt;&lt;/add&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;key&lt;/span&gt;=&lt;span class="st0"&gt;"hibernate.query.substitutions"&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;value&lt;/span&gt;=&lt;span class="st0"&gt;"true=1;false=0"&lt;/span&gt;&lt;br /&gt;       &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;add&gt;&lt;/add&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;key&lt;/span&gt;=&lt;span class="st0"&gt;"hibernate.use_prox y_validator"&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;value&lt;/span&gt;=&lt;span class="st0"&gt;"false"&lt;/span&gt;&lt;br /&gt;       &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&lt;span class="re2"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;p&gt;&lt;b&gt;Nota:&lt;/b&gt; Debido a problemas con el hosting no puedo colocar, arriba, el string correcto en la última parte. La palabra prohibida “p r o x y” (sin espacios) tiene un espacio de más entre la “x” y la “y”. En fin, deshabilito en esas lineas la comprobación de clases p r o x y.&lt;/p&gt; &lt;p&gt;Luego en un archivo como &lt;em&gt;Main.cs&lt;/em&gt; agrego código en el método principal &lt;em&gt;Main&lt;/em&gt; para jugar con todo esto:&lt;/p&gt; &lt;div class="dean_ch" style="white-space: nowrap;"&gt; &lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span class="kw1"&gt;using&lt;/span&gt; &lt;span class="kw5"&gt;System&lt;/span&gt;;&lt;br /&gt;&lt;span class="kw1"&gt;using&lt;/span&gt; NHibernate;&lt;br /&gt;&lt;span class="kw1"&gt;using&lt;/span&gt; NHibernate.&lt;span class="me1"&gt;Cfg&lt;/span&gt;; &lt;/span&gt;  &lt;p&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span class="kw1"&gt;namespace&lt;/span&gt; PruebaNHibernate&lt;br /&gt;&lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span class="kw4"&gt;class&lt;/span&gt; MainClass&lt;br /&gt;   &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span class="kw1"&gt;public&lt;/span&gt; &lt;span class="kw1"&gt;static&lt;/span&gt; &lt;span class="kw1"&gt;void&lt;/span&gt; Main&lt;span class="br0"&gt; (&lt;/span&gt;&lt;span class="kw4"&gt;string&lt;/span&gt;&lt;span class="br0"&gt;[&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt; args&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;           Configuration conf  = &lt;a href="http://www.google.com/search?q=new+msdn.microsoft.com"&gt;&lt;span class="kw3"&gt;new&lt;/span&gt;&lt;/a&gt; Configuration&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;           &lt;span class="coMULTI"&gt;/* Con la siguiente línea leo todo los archivos con extensión&lt;br /&gt;            * hbm.xml embebidos como recurso en el assembly especificado */&lt;/span&gt;&lt;br /&gt;           conf.&lt;span class="me1"&gt;AddAssembly&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"PruebaNHibernate"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           ISessionFactory sessionFactory = conf.&lt;span class="me1"&gt;BuildSessionFactory&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           ISession s = sessionFactory.&lt;span class="me1"&gt;OpenSession&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           ITransaction tx = s.&lt;span class="me1"&gt;BeginTransaction&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           Persona p = &lt;a href="http://www.google.com/search?q=new+msdn.microsoft.com"&gt;&lt;span class="kw3"&gt;new&lt;/span&gt;&lt;/a&gt; Persona&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;           p.&lt;span class="me1"&gt;Nombre&lt;/span&gt; = &lt;span class="st0"&gt;"Milton"&lt;/span&gt;;&lt;br /&gt;           p.&lt;span class="me1"&gt;Apellido&lt;/span&gt; = &lt;span class="st0"&gt;"Pividori"&lt;/span&gt;;&lt;br /&gt;           s.&lt;span class="me1"&gt;Save&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;p&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;           tx.&lt;span class="me1"&gt;Commit&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           Console.&lt;span class="me1"&gt;WriteLine&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"p - Id: "&lt;/span&gt; + p.&lt;span class="me1"&gt;Id&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;           Console.&lt;span class="me1"&gt;WriteLine&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"p - Nombre: "&lt;/span&gt; + p.&lt;span class="me1"&gt;Nombre&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;           Console.&lt;span class="me1"&gt;WriteLine&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"p - Apellido: "&lt;/span&gt; + p.&lt;span class="me1"&gt;Apellido&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;           Console.&lt;span class="me1"&gt;WriteLine&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           Persona p2 = &lt;span class="br0"&gt;(&lt;/span&gt;Persona&lt;span class="br0"&gt;)&lt;/span&gt;s.&lt;span class="me1"&gt;Load&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?q=typeof+msdn.microsoft.com"&gt;&lt;span class="kw3"&gt;typeof&lt;/span&gt;&lt;/a&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Persona&lt;span class="br0"&gt;)&lt;/span&gt;, p.&lt;span class="me1"&gt;Id&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           Console.&lt;span class="me1"&gt;WriteLine&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"p2 - Id: "&lt;/span&gt; + p2.&lt;span class="me1"&gt;Id&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;           Console.&lt;span class="me1"&gt;WriteLine&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"p2 - Nombre: "&lt;/span&gt; + p2.&lt;span class="me1"&gt;Nombre&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;           Console.&lt;span class="me1"&gt;WriteLine&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"p2 - Apellido: "&lt;/span&gt; + p2.&lt;span class="me1"&gt;Apellido&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;           Console.&lt;span class="me1"&gt;WriteLine&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           &lt;span class="coMULTI"&gt;/* Verifico si son el mismo objeto p y p2, ya que estamos&lt;br /&gt;            * dentro de la misma sesión */&lt;/span&gt;&lt;br /&gt;           &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;(&lt;/span&gt;p == p2&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;               Console.&lt;span class="me1"&gt;WriteLine&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"p y p2 son el mismo objeto"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           p2.&lt;span class="me1"&gt;Apellido&lt;/span&gt; = &lt;span class="st0"&gt;"Paduán"&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           s.&lt;span class="me1"&gt;Flush&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           s.&lt;span class="me1"&gt;Close&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;       &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;En el proyecto agregué estas referencias:&lt;/p&gt; &lt;ul style="font-weight: bold;"&gt;&lt;li&gt;NHibernate.dll&lt;/li&gt;&lt;li&gt;System&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Ahora vamos a lo que nos interesa. En el archivo &lt;em&gt;app.config&lt;/em&gt; (que al compilar se traducirá a &lt;nombreassembly&gt;.exe.config en el directorio de salida), observemos estas lineas:&lt;/nombreassembly&gt;&lt;/p&gt; &lt;div class="dean_ch" style="white-space: nowrap;"&gt;       &lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;  …&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;         &lt;/span&gt;&lt;span style="font-weight: bold;" class="sc3"&gt;&lt;span class="re1"&gt;&lt;add&gt;&lt;/add&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;key&lt;/span&gt;=&lt;span class="st0"&gt;"hibernate.connection.driver_class"&lt;/span&gt;&lt;br /&gt;           &lt;span class="re0"&gt;value&lt;/span&gt;=&lt;span class="st0"&gt;"PruebaNHibernate.MonoDataSqliteDriver, PruebaNHibernate"&lt;/span&gt;&lt;br /&gt;       &lt;span class="re2"&gt;/&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;         …&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;p style="text-align: justify;"&gt;NHibernate trae un driver para SQLite, como dije al principio, pero que utiliza un provider que fue discontinuado. Por lo tanto, para utilizar Mono.Data.Sqlite, cree una clase en mi assembly (PruebaNHibernate) con el nombre que se indica allí (MonoDataSqliteDriver):&lt;/p&gt; &lt;div class="dean_ch" style="white-space: nowrap;"&gt; &lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span class="kw1"&gt;using&lt;/span&gt; &lt;span class="kw5"&gt;System&lt;/span&gt;;&lt;br /&gt;&lt;span class="kw1"&gt;using&lt;/span&gt; NHibernate.&lt;span class="me1"&gt;Driver&lt;/span&gt;; &lt;/span&gt; &lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kw1"&gt;namespace&lt;/span&gt; PruebaNHibernate&lt;br /&gt;&lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span class="kw1"&gt;public&lt;/span&gt; &lt;span class="kw4"&gt;class&lt;/span&gt; MonoDataSqliteDriver : ReflectionBasedDriver&lt;br /&gt;   &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span class="kw1"&gt;public&lt;/span&gt; MonoDataSqliteDriver&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;           : &lt;span class="kw1"&gt;base&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"Mono.Data.Sqlite"&lt;/span&gt;,&lt;br /&gt;                  &lt;span class="st0"&gt;"Mono.Data.Sqlite.SqliteConnection"&lt;/span&gt;,&lt;br /&gt;                  &lt;span class="st0"&gt;"Mono.Data.Sqlite.SqliteCommand"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;     &lt;br /&gt;       &lt;span class="kw1"&gt;public&lt;/span&gt; &lt;span class="kw1"&gt;override&lt;/span&gt; &lt;span class="kw4"&gt;bool&lt;/span&gt; UseNamedPrefixInSql&lt;br /&gt;       &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;           get &lt;span class="br0"&gt;{&lt;/span&gt; &lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="kw1"&gt;true&lt;/span&gt;; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;}&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;        &lt;span class="kw1"&gt;public&lt;/span&gt; &lt;span class="kw1"&gt;override&lt;/span&gt; &lt;span class="kw4"&gt;bool&lt;/span&gt; UseNamedPrefixInParameter&lt;br /&gt;       &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;           get &lt;span class="br0"&gt;{&lt;/span&gt; &lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="kw1"&gt;true&lt;/span&gt;; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;        &lt;span class="kw1"&gt;public&lt;/span&gt; &lt;span class="kw1"&gt;override&lt;/span&gt; &lt;span class="kw4"&gt;string&lt;/span&gt; NamedPrefix&lt;br /&gt;       &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;           get &lt;span class="br0"&gt;{&lt;/span&gt; &lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="st0"&gt;"@"&lt;/span&gt;; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;        &lt;span class="kw1"&gt;public&lt;/span&gt; &lt;span class="kw1"&gt;override&lt;/span&gt; &lt;span class="kw4"&gt;bool&lt;/span&gt; SupportsMultipleOpenReaders&lt;br /&gt;       &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;           get &lt;span class="br0"&gt;{&lt;/span&gt; &lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="kw1"&gt;false&lt;/span&gt;; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;       &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;En el constructor de la misma le paso a mi clase padre los argumentos que necesita: nombre del assembly (en este caso “Mono.Data.Sqlite”), clase para crear la conexión y ejecutar comandos. Desconozco los detalles de SQLite, así que copié los métodos sobreescritos del driver viejo.&lt;/p&gt; &lt;p&gt;No pude hacer que NHibernate cargue el assembly “Mono.Data.Sqlite” desde el GAC, así que hay que copiarlo al directorio del ejecutable. Es necesario copiar otros archivos, como las dependencias de NHibernate y la base de datos (data.db). Se pueden bajar el proyecto completo para MonoDevelop &lt;a href="http://www.miltonpividori.com.ar/wp-content/uploads/2007/12/pruebanhibernatetarbz2.png" title="pruebanhibernatetarbz2.png"&gt;aquí&lt;/a&gt;. El archivo obviamente no es un png, pero sino no lo puedo subir &lt;img src="http://www.miltonpividori.com.ar/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /&gt; &lt;/p&gt; &lt;p&gt;Ahora bien, &lt;strong&gt;hay un problemita&lt;/strong&gt;… el archivo System.Data.dll que viene con Mono 1.2.4 en Gutsy tiene un bug que hará que el ejemplo no funcione. El mismo ya fue solucionado en la versión 1.2.6. Así que, como workaround, pueden bajarse el paquete de Debian &lt;a href="http://packages.debian.org/sid/libmono-system-data2.0-cil"&gt;libmono-system-data2.0-cil&lt;/a&gt; correspondiente a la versión 1.2.6 de Mono y sobreeescribir ese archivo, que se ubica en &lt;em&gt;/usr/lib/mono/gac/System.Data/2.0.0.0__b77a5c561934e089/&lt;/em&gt;. Reporté el problema en Ubuntu, así que quizá lo actualicen dentro de poco.&lt;/p&gt; &lt;p&gt;Con esto podremos utilizar SQLite con NHibernate, bajo Mono, con un binding actualizado.&lt;/p&gt;&lt;p&gt;Autor :&lt;span email="miltondp@gmail.com"&gt;&lt;span style="font-weight: bold;"&gt; Milton Pividori&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;FUENTE DEL ARTICULO : &lt;span style="font-weight: bold;"&gt;http://www.miltonpividori.com.ar/2007/12/30/mono-nhibernate-sqlite/&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-2474719764391493061?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2474719764391493061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2474719764391493061'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/11/mono-nhibernate-sqlite.html' title='Mono + NHibernate + SQLite'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uJwbWnvfNFg/SRB0Bg0EqRI/AAAAAAAAAP8/v0H8oiqEgW4/s72-c/mono.fire.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1172129829862929763</id><published>2008-11-02T12:33:00.000-08:00</published><updated>2008-11-02T17:15:23.709-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Gambas'/><title type='text'>SQLite y Gambas2</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_GVlP-iC9z1k/SQ4MTbyu9hI/AAAAAAAAAE0/sKQ-fhFcyVI/s1600-h/Gambas_Logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 141px; height: 182px;" src="http://4.bp.blogspot.com/_GVlP-iC9z1k/SQ4MTbyu9hI/AAAAAAAAAE0/sKQ-fhFcyVI/s320/Gambas_Logo.png" alt="" id="BLOGGER_PHOTO_ID_5264158542460286482" border="0" /&gt;&lt;/a&gt;Gambas es otro de los tantos hacks recursivos que se usan, en si el significado es "Gambas Almost Means Basic", pensado como herramienta RAD y con Basic como lenguaje base, pero mejorado, vemos que tambien es multiprosito, en esta ocasión vamos a ver como hacer una conexión a una base de datos SQLite desde Gambas2.&lt;br /&gt;&lt;br /&gt;Lo primero que debemos tener disponible para trabajar, ademas de SQLite, es Gambas2, en Debian y derivados:&lt;br /&gt;&lt;br /&gt;#apt-get install gambas2&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;para otras distros podemos encontrar las fuentes en &lt;a href="http://gambas.sourceforge.net/"&gt;http://gambas.sourceforge.net/&lt;/a&gt;&lt;br /&gt;la parte mas importante esta en saber cuales son las herramientas que nos provee el languaje, y los datos de conexión de almacenan en un solo botón, el codigo es el siguiente:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;/span&gt;&lt;blockquote style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;'Instanciamos un objeto de clase C&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;onnection&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;PRIVATE $hConn A&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;S Connection&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;&lt;br /&gt;'Boton de conexión a la base de datos&lt;br /&gt;PUBLIC SUB btnC&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;onn&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;ect_Click()&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt; DIM sName AS String&lt;br /&gt;DIM hTable AS Table&lt;br /&gt;&lt;br /&gt;TRY $hConn.Close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt; sName = txtName.Text&lt;br /&gt;&lt;br /&gt;IF sName &lt;&gt; "" THEN&lt;br /&gt;&lt;br /&gt;'Asignamos valores a las pr&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;opiedades que vamos a usar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt; WITH $hConn&lt;br /&gt;&lt;br /&gt;'Definimos el tipo de base de datos&lt;br /&gt;.Type = "sqlite"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;&lt;br /&gt;'Definimos el nombre del host&lt;br /&gt;.Host = txtHost.Text&lt;br /&gt;&lt;br /&gt;END WITH&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;&lt;br /&gt;'Asignamos el nombre de la conexion&lt;br /&gt;$hConn.Name = sName&lt;br /&gt;&lt;br /&gt;'Abrimos la&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt; conexion p&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;ara poder trabajar&lt;br /&gt;$hConn.Open&lt;br /&gt;&lt;br /&gt;'Habilitamos los otros formularios&lt;br /&gt;frmDatabase.Enabled = TRUE&lt;br /&gt;frmRequest.Enabled = TRUE&lt;br /&gt;&lt;br /&gt;btnConnect.Enabled = FALSE&lt;br /&gt;btnClose.Enabled&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt; = TRUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;CATCH&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt; Message.Error(DConv(Error.Text))&lt;br /&gt;ENDIF&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;END&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;A continuación capturas de la aplicacion terminada y en diseño.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GVlP-iC9z1k/SQ4NGHuccNI/AAAAAAAAAFE/NzNeeJ0MQjs/s1600-h/gambas-sqlite1.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 184px;" src="http://1.bp.blogspot.com/_GVlP-iC9z1k/SQ4NGHuccNI/AAAAAAAAAFE/NzNeeJ0MQjs/s200/gambas-sqlite1.png" alt="" id="BLOGGER_PHOTO_ID_5264159413246914770" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GVlP-iC9z1k/SQ4NFqSH9hI/AAAAAAAAAE8/s9V2qflJvaE/s1600-h/gambas-sqlite.png"&gt; &lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GVlP-iC9z1k/SQ4NFqSH9hI/AAAAAAAAAE8/s9V2qflJvaE/s1600-h/gambas-sqlite.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 134px;" src="http://2.bp.blogspot.com/_GVlP-iC9z1k/SQ4NFqSH9hI/AAAAAAAAAE8/s9V2qflJvaE/s200/gambas-sqlite.png" alt="" id="BLOGGER_PHOTO_ID_5264159405343503890" border="0" /&gt; &lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Antes de terminar debo aclarar que la base de datos debe estar creada, en caso contrario no se realiza la conexión, ademas se debe dar la ruta completa de la ubicación del archivo que contiene dicha base de datos. La aplicación completa para su descarga en el siquiente link:&lt;br /&gt;&lt;/div&gt;&lt;a href="http://sites.google.com/site/marcoantoniomansilla/Home/SQLite-Gambas.tar.bz2?attredirects=0"&gt;Descarga&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1172129829862929763?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1172129829862929763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1172129829862929763'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/11/sqlite-y-gambas.html' title='SQLite y Gambas2'/><author><name>Marco Mansilla</name><uri>http://www.blogger.com/profile/16652013456839097470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_GVlP-iC9z1k/SJY4YZV4cvI/AAAAAAAAAAM/yWiQEat1kUY/S220/0002.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_GVlP-iC9z1k/SQ4MTbyu9hI/AAAAAAAAAE0/sKQ-fhFcyVI/s72-c/Gambas_Logo.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7563379960282667756</id><published>2008-09-30T18:29:00.000-07:00</published><updated>2008-09-30T19:12:00.031-07:00</updated><title type='text'>Generador de Trigger</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uJwbWnvfNFg/SOLbvi8HUkI/AAAAAAAAAL0/HIBneM7_hnU/s1600-h/cz75_trigger.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 271px; height: 204px;" src="http://2.bp.blogspot.com/_uJwbWnvfNFg/SOLbvi8HUkI/AAAAAAAAAL0/HIBneM7_hnU/s320/cz75_trigger.jpg" alt="" id="BLOGGER_PHOTO_ID_5252001725346697794" border="0" /&gt;&lt;/a&gt;Todos sabemos que sqlite, carese de integridad referencia, no obstante podemos definirla atraves de los trigger  o disparador, su funcion dentro de la DB es ejecutar un evento cuando se cumple una condición establecida al realizar una operación de inserción (INSERT), actualización (UPDATE) o borrado (DELETE).&lt;br /&gt;Aqui les dejamos un link donde puden mirar un par de ejemplos sobre la contruccion de trigger y un generador de triggers.&lt;br /&gt;Si se pregunta por que estamos desaparecidos en Sqlite - Latino. , Nos econtramos preparando un par de sopresas.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;                                                                                                                                           Saludos&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:78%;"&gt;link data&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;"Genarador Triggers" :&lt;br /&gt;&lt;/span&gt;http://www.rcs-comp.com/site/index.php/view/Utilities-SQLite_foreign_key_trigger_generator&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;"elserver" :&lt;br /&gt;&lt;/span&gt; http://www.elserver.com/wiki/SQLite_relacionar_tablas_con_triggers&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"Sqlite" : &lt;/span&gt;&lt;br /&gt;http://www.sqlite.org/lang_createtrigger.html&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"esteparioprogramador" :&lt;br /&gt;&lt;/span&gt;http://esteparioprogramador.bligoo.com/content/view/228771&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"justatheory":&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;http://www.justatheory.com/computers/databases/sqlite/foreign_key_triggers.html&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7563379960282667756?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7563379960282667756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7563379960282667756'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/09/generador-de-trigger.html' title='Generador de Trigger'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uJwbWnvfNFg/SOLbvi8HUkI/AAAAAAAAAL0/HIBneM7_hnU/s72-c/cz75_trigger.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1995701403307585650</id><published>2008-09-01T08:39:00.000-07:00</published><updated>2008-09-01T08:42:46.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Presentacion'/><title type='text'>Reunión de la Comunidad SQLite-Latino</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/sqlitelatino/SLv4ANUil3I/AAAAAAAAADY/5oIlLyaIL7o/dsc00562.jpg?imgmax=512"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://lh6.ggpht.com/sqlitelatino/SLv4ANUil3I/AAAAAAAAADY/5oIlLyaIL7o/dsc00562.jpg?imgmax=512" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En el marco de las III Jornadas de Software Libre organizado por alumnos de la Universidad Nacional de Jujuy – UNJu, en la Provincia de Jujuy – Argentina, la Comunidad SQLite – Latno tuvo lugar a un encuentro en donde se organizaron algunas cuestiones propias del grupo.&lt;br /&gt;&lt;br /&gt;La verdad que es la primera ves que estamos reunidos y charlando sobre los proyectos que se biene de acá en adelante.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/sqlitelatino/SLv23_z6z0I/AAAAAAAAAC8/lWJVvVMEuno/dsc00557.jpg?imgmax=512"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://lh5.ggpht.com/sqlitelatino/SLv23_z6z0I/AAAAAAAAAC8/lWJVvVMEuno/dsc00557.jpg?imgmax=512" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Es por ello que la invitación de participar nuevamente se renueva con el fin de incorporar más seguidores y entusiastas a colaborar con esta pequeña comunidad que día a día y gracias a ustedes va creciendo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1995701403307585650?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1995701403307585650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1995701403307585650'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/09/reunin-de-la-comunidad-sqlite-latino.html' title='Reunión de la Comunidad SQLite-Latino'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/sqlitelatino/SLv4ANUil3I/AAAAAAAAADY/5oIlLyaIL7o/s72-c/dsc00562.jpg?imgmax=512' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-5611702240722867359</id><published>2008-08-11T16:27:00.000-07:00</published><updated>2008-08-11T17:07:58.497-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Groovy'/><title type='text'>Groovy + GSql + SQLite (Parte I)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uJwbWnvfNFg/SKDQxczzZXI/AAAAAAAAAJ0/9sRU5XyXKic/s1600-h/medium.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_uJwbWnvfNFg/SKDQxczzZXI/AAAAAAAAAJ0/9sRU5XyXKic/s320/medium.png" alt="" id="BLOGGER_PHOTO_ID_5233412314970154354" border="0" /&gt;&lt;/a&gt;Groovy&lt;br /&gt;Es un lenguaje de programación orientado a objetos implementado sobre la plataforma Java. Tiene características similares a Python, Ruby, Perl y Smalltalk. por lo tanto permite escribir código "simple, limpio y corto" -&lt;a href="http://groovy.org.es/home/index"&gt;mas info&lt;/a&gt;-&lt;br /&gt;&lt;br /&gt;GSql Y SQLite&lt;br /&gt;&lt;br /&gt;GSql simplifica el acceso a los JDBC, es capas de implementar SQLite, atraves de de la compatibilidad con las librerías de Java, esto lleva  aprovechar algunas característica presente en Groovy.&lt;br /&gt;Con estos sencillos pasos podremos llevar a cabo la conexión y previa consulta de datos utilizando Groovy + Gsql + Sqlite&lt;br /&gt;&lt;br /&gt;1ro- Descargar las librerías de SQLiteJDBC desde el sitio http://www.zentus.com/sqlitejdbc/, las mismas son totalmente  nativas y desarrolladas 100% Java.&lt;br /&gt;&lt;br /&gt;2do- Agregar el JDBC sqlitejdbc-v052.jar dento de la configuración de groovy en  ~/.groovy/lib. en mi caso&lt;br /&gt;&lt;br /&gt;En GNU/Linux = /urs/share/groovy/lib/&lt;br /&gt;En M$ Guindos = archivodeprograma\groovy\lib\&lt;br /&gt;&lt;br /&gt;3ro- Se debe de crear la DB con SQLite -   &lt;a href="http://sqlite-latino.blogspot.com/2007/11/review-de-sqlite-parte-i.html"&gt;&lt;span style="font-weight: bold;"&gt;Review I&lt;/span&gt;&lt;/a&gt; y &lt;a href="http://sqlite-latino.blogspot.com/2007/11/review-de-sqlite-parte-ii.html"&gt;&lt;span style="font-weight: bold;"&gt;Review II&lt;/span&gt;&lt;/a&gt; -&lt;br /&gt;&lt;br /&gt;4to- Ejecutamos GroovyConsole.&lt;br /&gt;&lt;br /&gt;Una ves desplegada la consola de Groovy, lo que debemos de hacer es importar las librerías GSQL  y se creara una nueva instanciar de la clase SQL o conexión con los driver JDBC, es muy importante definir la URL de la DB y el el nombre del Driver, como se muestra a continuación :&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import groovy.sql.Sql&lt;br /&gt;sql = groovy.sql.Sql.newInstance("jdbc:sqlite:/home/gerardo/sqlitelatino.db","org.sqlite.JDBC")&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Ahora crearemos una nueva tabla la cual recibe el nombre de "prueba", dentro de groovy se utiliza el método execute, que se encuentra en la clase sql , este método recibe como parámetro un objeto string que es una sentencia SQL. En este caso Create :&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sql.execute("create table prueba(ide,nombre,mail)")&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;Una ves creada la tabla , realizaremos la inserción de nuevos campos, para ello seguiremos utilizando el método execute, solo que cambiaremos la sentencia Create por Insert. como se muestra a continuación.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sql.execute("insert into comunidad(ide,nombre, mail) values('Gerardo', 'gerard@mail.com')")&lt;br /&gt;sql.execute("insert into comunidad(ide,nombre, mail) values('Daniel',' dan@mail.com')")&lt;br /&gt;sql.execute("insert into comunidad(ide,nombre, mail) values('Marcos', 'big@mail.com')")&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Para poder dar un poco de vida  a nuestro código, usaremos println para dejar  carteles indicando que datos se están mostrando.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;println 'SQlite Latino'&lt;br /&gt;println ' Nombre   Email '&lt;br /&gt;println '+--------+--------+'&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Ahora utilizaremos el método eachRow el cual me devuelve cada elemento de una consulta determinada y en cada iteración se visualizara el contendido del los elementos.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sql.eachRow('select * from comunidad?)&lt;br /&gt;{ integrante -&gt;println "${integrante.nombre} ${integrante.mail}"&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Ahora solamente bastar con ir a la barra de menú de GroovyConsole y Ejecutar Run. el cual compilara y ejecuta nuestro código Groovy. Hasta aquí la entrega de Sqlite + Groovy. esperamos realizar muy pronto una nueva entrega.&lt;br /&gt;                                                                                             Un Abrazo , Hasta la proxima...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-5611702240722867359?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5611702240722867359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5611702240722867359'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/08/groovy-gsql-sqlite-parte-i.html' title='Groovy + GSql + SQLite (Parte I)'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uJwbWnvfNFg/SKDQxczzZXI/AAAAAAAAAJ0/9sRU5XyXKic/s72-c/medium.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-4050653108206866093</id><published>2008-08-09T21:21:00.000-07:00</published><updated>2008-08-09T21:28:25.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Ruby'/><title type='text'>Ruby - SQLite (Parte II)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.goodbyehelicopter.com/wp-content/uploads/2007/10/ruby-logo4.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 184px; height: 184px;" src="http://www.goodbyehelicopter.com/wp-content/uploads/2007/10/ruby-logo4.jpg" alt="" border="0" /&gt;&lt;/a&gt;Ahora luego de una pequeña demora, veamos como realizar nuestro primer ejemplo con el lenguaje de programación &lt;a href="http://www.elcodigok.com.ar/category/lenguajes-de-programacion/ruby/"&gt;&lt;span style="font-weight: bold;"&gt;Ruby&lt;/span&gt;&lt;/a&gt; y nuestro ya conocido pseudomotor &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Si aún no tienes instalado el módulo de SQLite para Ruby, te recomiendo que leas el post anterior antes de continuar con este ejemplo.&lt;br /&gt;&lt;br /&gt;Lo primero que vamos a realizar es crear un archivo para que lo ejecute luego el intérprete de Ruby, simplemente en nuestro editor de texto favorito creamos un archivo con extensión &lt;span style="font-weight: bold;"&gt;.rb&lt;/span&gt; por ejmplo "&lt;span style="font-style: italic;"&gt;prueba01.rb&lt;/span&gt;" y vamos a utilizar la base de datos que utilizamos para aprender en las &lt;a href="http://sqlite-latino.blogspot.com/2007/11/review-de-sqlite-parte-i.html"&gt;&lt;span style="font-weight: bold;"&gt;Review I&lt;/span&gt;&lt;/a&gt; y &lt;a href="http://sqlite-latino.blogspot.com/2007/11/review-de-sqlite-parte-ii.html"&gt;&lt;span style="font-weight: bold;"&gt;Review II&lt;/span&gt;&lt;/a&gt; de SQLite.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;# Importamos las librerías de SQLite3&lt;br /&gt;require 'sqlite3'&lt;br /&gt;&lt;br /&gt;# Realizamos la correspondiente conexión con la Base de Datos.&lt;br /&gt;# Para ello podemos colocar el Path donde se encuentra el mismo&lt;br /&gt;db = SQLite3::Database.new("BaseDatos.db")&lt;br /&gt;&lt;br /&gt;# En la variable sql, realizamos una consulta, simplemente&lt;br /&gt;# por cuestiones de prolijidad y legibilidad.&lt;br /&gt;sql = "SELECT apellido, nombre FROM personal order by id"&lt;br /&gt;&lt;br /&gt;# Ejecutamos la consulta ingresada en la variable anterior&lt;br /&gt;# recorriendo el contenido de la misma&lt;br /&gt;db.execute(sql) do |fila|&lt;br /&gt; p fila&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;# Por último cerramos la conexión&lt;br /&gt;db.close&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por último solo nos va a quedar interpretar y ejecutar el archivo creado, esto es hace de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;$ ruby prueba01.rb&lt;/code&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-4050653108206866093?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4050653108206866093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4050653108206866093'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/08/ruby-sqlite-parte-ii.html' title='Ruby - SQLite (Parte II)'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7094698243411381197</id><published>2008-08-07T18:41:00.000-07:00</published><updated>2008-08-07T19:48:01.040-07:00</updated><title type='text'>SQLite 3.6.1</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uJwbWnvfNFg/SJuyyqwLATI/AAAAAAAAAJs/GJc9Idyv4XE/s1600-h/Imagnees.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_uJwbWnvfNFg/SJuyyqwLATI/AAAAAAAAAJs/GJc9Idyv4XE/s200/Imagnees.jpg" alt="" id="BLOGGER_PHOTO_ID_5231971975660503346" border="0" /&gt;&lt;/a&gt;Hace algunos dias se encuentra libre la  version de sqlite la 3.6.1 , la cual a solucionados algunos de los problemas de las antiguas versiones.&lt;br /&gt;&lt;br /&gt;# Modificacion del Virtual File System&lt;br /&gt;&lt;br /&gt;# La Busqueda ahora es un 15% mas Rapida&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ademas se esperan nuevas mejoras para la version 3.7 como :&lt;br /&gt;&lt;br /&gt;1. Los nombres puede ser incluido en [...] para mantener la compatibilidad con Access&lt;br /&gt;y SQLServer.&lt;br /&gt;&lt;br /&gt;2. Los nombres puede ser incluido en los acentos graves para la compatibilidad con&lt;br /&gt;MySQL.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7094698243411381197?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7094698243411381197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7094698243411381197'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/08/sqlite-361.html' title='SQLite 3.6.1'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uJwbWnvfNFg/SJuyyqwLATI/AAAAAAAAAJs/GJc9Idyv4XE/s72-c/Imagnees.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-256314816950635245</id><published>2008-06-26T09:56:00.000-07:00</published><updated>2008-06-26T10:01:03.332-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Ruby'/><title type='text'>Ruby – SQLite</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://anatoly.ragesys.net/wp-content/uploads/2007/07/256px-599px-ruby_logo_svg.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 173px; height: 173px;" src="http://anatoly.ragesys.net/wp-content/uploads/2007/07/256px-599px-ruby_logo_svg.png" alt="" border="0" /&gt;&lt;/a&gt;Después de algunas pruebas y ejemplos vamos a ver, aprender y conocer como manejar &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; a través de &lt;span style="font-weight: bold;"&gt;Ruby&lt;/span&gt;, un excelente lenguaje de programación.&lt;br /&gt;&lt;br /&gt;Nuevamente vamos a ver como se comporta &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; con diferentes lenguajes, en este caso nos vamos a referir a Ruby, un lenguaje de programación interpretado, multiplataforma, totalmente libre de licencia &lt;span style="font-weight: bold;"&gt;GNU/GPL&lt;/span&gt; (&lt;span style="font-style: italic;"&gt;GNU General Public License&lt;/span&gt;) creado por Yukihiro Matsumoto. Si deseamos conocer más información sobre este lenguaje les recomiendo que visiten este enlace.&lt;br /&gt;&lt;br /&gt;Ruby poco a poco esta captando más usuarios programadores y al igual que Python es totalmente orientado a objeto, fácil de aprender, muy flexible y ágil.&lt;br /&gt;&lt;br /&gt;Al igual que en otros How To si se trata de SQLite siempre les recomendamos que ya sepan de antemano algunos manejos de SQLite para ellos les recomendamos que lean las &lt;a href="http://sqlite-latino.blogspot.com/2007/11/review-de-sqlite-parte-i.html"&gt;&lt;span style="font-weight: bold;"&gt;Review I&lt;/span&gt;&lt;/a&gt; y &lt;a href="http://sqlite-latino.blogspot.com/2007/11/review-de-sqlite-parte-ii.html"&gt;&lt;span style="font-weight: bold;"&gt;Review II&lt;/span&gt;&lt;/a&gt; escritas por la comunidad.&lt;br /&gt;&lt;br /&gt;Antes de comenzar a realizar los ejemplo y prácticas preparemos el terreno y el entorno de ejecución.&lt;br /&gt;&lt;br /&gt;Como les decía anteriormente Ruby, un lenguaje que día a día pisando más fuerte, es muy probable que ya lo tengamos instalado en nuestra distribución GNU/Linux, en caso que no la tengamos realizamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;$ sudo apt-get install ruby irb rdoc ir&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con estoy nos instalar el intérprete de Ruby y otras herramientas muy útiles.&lt;br /&gt;&lt;br /&gt;Ahora necesitamos instalar la librería que nos va a permitir manipular y manejar a través de objetos las bases de datos creadas por SQLite. Para esto existen muchas maneras de instalar.&lt;br /&gt;&lt;br /&gt;Una de las formas exites un concepto en Ruby que nos permite instalar librerías y módulos llamado &lt;span style="font-weight: bold;"&gt;Gems&lt;/span&gt;, la cual se conecta a un repositorio, descarga la librería y la instala, para ello podemos realizar lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;gem install --remote sqlite-ruby&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Otro método que se los puedo recomendar por que lo utilicé asi, es descargar &lt;a href="http://rubyforge.org/projects/sqlite-ruby/"&gt;&lt;span style="font-weight: bold;"&gt;RubyForge&lt;/span&gt;&lt;/a&gt; las librerías, descomprimirlas en nuestro sistema, entramos al directorio y realizamos el siguiente comando para instalarlo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;sudo ruby setup.rb&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;De esta menra podemos decir que ya tenemos instalador y configurado el módulo para manipular las bases de datos SQLite y en su última versión que es la 3.&lt;br /&gt;&lt;br /&gt;Una de las ventajas que encontre instalando desde el código fuente, es que en el mismo además de encontrar ejemplos es un FAQ y bastante documentación que nos será útil para dar los primeros pasos.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Hasta aquí la primera entrega de SQLite y Ruby, en próximas entregas vamos a ver las conexiones e implementación sobre este lenguaje.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-256314816950635245?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/256314816950635245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/256314816950635245'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/06/ruby-sqlite.html' title='Ruby – SQLite'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-6902927059670326065</id><published>2008-06-16T16:16:00.000-07:00</published><updated>2008-06-16T16:19:57.623-07:00</updated><title type='text'>Quienes nos Visitan</title><content type='html'>Nos &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;justaría&lt;/span&gt; mucho que dejen su firma en nuestro  &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Visitor&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Map&lt;/span&gt;. de SQlite Latino&lt;/span&gt;&lt;br /&gt;Un Abrazo Gerardo Antonio Cabero&lt;br /&gt;   &lt;div&gt;&lt;embed quality="high" type="application/x-shockwave-flash" src="http://www.frappr.com/ajax/yvmap.swf" flashvars="host=http://www.frappr.com/&amp;amp;origin=blogger&amp;amp;lo=1&amp;amp;mvid=137440724275" salign="l" align="middle" scale="noscale" width="500" height="300"&gt;&lt;/embed&gt;&lt;div style="width:400px;text-align:left;"&gt;&lt;a href="http://visitor.frappr.com/?sig=visitor_map&amp;amp;src_mvid=137440724275&amp;amp;origin=blogger" target="_blank"&gt;&lt;img src="http://frappr.com/i/gyo.gif" border="0/" /&gt;&lt;/a&gt;&lt;a href="http://www.frappr.com/?a=constellation_map&amp;amp;mapid=137440587486&amp;amp;src=flash_map&amp;amp;sig=visitor_map&amp;amp;src_mvid=137440724275&amp;amp;origin=blogger&amp;amp;ct=seemore" target="_blank"&gt;&lt;img src="http://frappr.com/i/s.gif" border="0/" /&gt;&lt;/a&gt;&lt;a href="http://www.frappr.com/?a=constellation_map&amp;amp;mapid=137440587486&amp;amp;src=flash_map&amp;amp;sig=visitor_map&amp;amp;src_mvid=137440724275&amp;amp;origin=blogger&amp;amp;ct=pendingpins" target="_blank"&gt;&lt;img src="http://frappr.com/dyn_map/137440587486/origin:blogger/p.gif" border="0/" /&gt;&lt;/a&gt;&lt;a href="http://www.frappr.com/?a=feedback&amp;amp;type=vm" target="_blank"&gt;&lt;img src="http://frappr.com/i/h.gif" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-6902927059670326065?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6902927059670326065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6902927059670326065'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/06/quienes-nos-visitan.html' title='Quienes nos Visitan'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8698330865209112836</id><published>2008-06-11T19:38:00.000-07:00</published><updated>2008-06-11T19:40:24.618-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exposiciones'/><title type='text'>Access VS SQLite</title><content type='html'>A lo largo de este tiempo es interesante ir recolectando datos y experiencias de usuarios que ya experimentaron con &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; y comienza a sacar sus propias conclusiones.&lt;br /&gt;&lt;br /&gt;Este post encontré navegando por la WWW y en esta oportunidad lo quería compartir con todos ustedes.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://quarkblog.org/2006/10/11/access-vs-sqlite-los-resultados/"&gt;QuarkBlog&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;De hecho te invitamos a que nos cuentes tu experiencia o tus primeros pasos con SQLite&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8698330865209112836?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8698330865209112836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8698330865209112836'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/06/access-vs-sqlite.html' title='Access VS SQLite'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-9088150527466857647</id><published>2008-06-07T13:40:00.000-07:00</published><updated>2008-06-07T14:15:12.730-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Java'/><title type='text'>Link Guias JAVA y Sqlite</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://xochitl.matem.unam.mx/%7Ecanek/pensadero/posts-images/2006/11/thumb-java-duke-guitar.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 274px; height: 234px;" src="http://xochitl.matem.unam.mx/%7Ecanek/pensadero/posts-images/2006/11/thumb-java-duke-guitar.png" alt="" border="0" /&gt;&lt;/a&gt;Hace algunos dias posteamos un Link de Guias de Php. Aqui le traemos, un par de link para los desarrolladores java .&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.zentus.com/sqlitejdbc/"&gt;http://www.zentus.com/sqlitejdbc/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ch-werner.de/javasqlite/"&gt;http://www.ch-werner.de/javasqlite/ -ORM-&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ifconfig.com.ar/programacion/sqlite-y-java/"&gt;http://www.ifconfig.com.ar/programacion/sqlite-y-java/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.itwriting.com/sqlitenotes.php"&gt;http://www.itwriting.com/sqlitenotes.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.seraphinux.com/index.php/183/2008/06/01/sqlite-con-java/"&gt;http://www.seraphinux.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-9088150527466857647?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/9088150527466857647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/9088150527466857647'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/06/link-guias-java-y-sqlite.html' title='Link Guias JAVA y Sqlite'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8061277119659161335</id><published>2008-06-03T16:48:00.000-07:00</published><updated>2008-06-03T17:46:22.399-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y PhP'/><title type='text'>Link Guias PHP y Sqlite</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uJwbWnvfNFg/SEXfoS40W1I/AAAAAAAAAHE/Xd7IDhTx1Ck/s1600-h/logophp.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 349px; height: 78px;" src="http://1.bp.blogspot.com/_uJwbWnvfNFg/SEXfoS40W1I/AAAAAAAAAHE/Xd7IDhTx1Ck/s320/logophp.gif" alt="" id="BLOGGER_PHOTO_ID_5207814427481758546" border="0" /&gt;&lt;/a&gt;&lt;span&gt;Aqui una pequeña lista de sitios, y Blogs para los desarrolladores de PHP , que desaen trabajar con sqlite para sus aplicaciones.. Si teien mas link sobre otros lenguajes seran bienvenidos....&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://es.codepicks.net/phpmanual/ref.sqlite.html"&gt;http://es.codepicks.net/phpmanual/ref.sqlite.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devshed.com/c/a/PHP/Introduction-to-Using-SQLite-with-PHP-5/1/"&gt;http://www.devshed.com/c/a/PHP/Introduction-to-Using-SQLite-with-PHP-5/1/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ar2.php.net/manual/es/book.sqlite.php"&gt;http://ar2.php.net/manual/es/book.sqlite.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://devzone.zend.com/node/view/id/760"&gt;http://devzone.zend.com/node/view/id/760&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.jenseng.com/db/"&gt;http://code.jenseng.com/db/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.litewebsite.com/?c=49"&gt;http://www.litewebsite.com/?c=49&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8061277119659161335?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8061277119659161335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8061277119659161335'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/06/link-guias-php-y-sqlite.html' title='Link Guias PHP y Sqlite'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uJwbWnvfNFg/SEXfoS40W1I/AAAAAAAAAHE/Xd7IDhTx1Ck/s72-c/logophp.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-6620493728151307729</id><published>2008-05-24T16:22:00.000-07:00</published><updated>2008-05-24T17:37:06.957-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exposiciones'/><title type='text'>SQLite de viaje por Argentina</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.yucatan.com.mx/tarjetas/images/grandres/carreta.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 317px; height: 236px;" src="http://www.yucatan.com.mx/tarjetas/images/grandres/carreta.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hola amigos de &lt;span style="font-weight: bold;"&gt;SQLITE LATINO AMERICA&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Me van a disculpar, anteriormente no tuve tiempo para poner mas info de este evento q se realizo en la ciudad de cordoba en argentina las&lt;span style="font-weight: bold;"&gt;  "2das Jornadas de Software Libre"&lt;/span&gt; , organizadas por el &lt;span style="font-weight: bold;"&gt;Grupo DATA &lt;/span&gt;- Grupo de Investigación en Software Libre de la UTN Facultad Regional San Francisco de la Provincia de Córdoba.&lt;/p&gt;&lt;p&gt; Como disertante en los siguientes temas&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                Superwaba - Desarrollo de Aplicaciones Móviles - ,&lt;/p&gt;&lt;p&gt;                Groovy - Lenguaje Dinámico para la VM -&lt;/p&gt;&lt;p&gt;            &lt;span style="font-weight: bold;"&gt;                SQLITE "la comunidad SQLITE - LAtino America"&lt;/span&gt;&lt;/p&gt; &lt;p&gt;"Fue una experiencia, muy grata tanto para los distantes como para la gente que participo del evento e notado que existe mucha gente que se esa introduciendo lentamente en esto del SL y OpenSource. Los chicos del Grupo Data han logrado su Objetivo, el cual fue la difusión y uso del software libre como herramienta opcional .&lt;/p&gt;&lt;p&gt;En mi charla de Sqlite, comenze a explicar sobre lo que es el proyecto la idea delDR Hipp, Y Comenze a albarle de las ventajas y desventajas . Explieque asimismo el concepto de SeudoMotor y de su funciones dentro de la aplicaciones, Algunas  Empresas y Software con Sqlite, casi al final les comente sobre nuestra pequeña comunidad sqlite-latino america.&lt;br /&gt;&lt;/p&gt; Me gustaría agradecer a los Organizadores y todas las empresas que han apoyado a que este evento se cumpla, como así también me gustaría mandar un Gran Saludo al&lt;span style="font-weight: bold;"&gt; Sr. David Casco &lt;/span&gt;, quien coordino todo el evento..y fue una de las piezas fundamentales para lograr el éxito..Saludos&lt;br /&gt;&lt;div style="text-align: right;"&gt;Gerardo Antonio Cabero&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-6620493728151307729?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6620493728151307729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6620493728151307729'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/05/sqlite-de-viaje-por-argentina.html' title='SQLite de viaje por Argentina'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1961524722707656393</id><published>2008-05-06T18:28:00.000-07:00</published><updated>2008-05-06T18:53:59.410-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prensa'/><title type='text'>Sqlite Latino Presente</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a href="http://jornadas08.com.ar/"&gt; &lt;img src="http://jornadas08.com.ar/images/baner1.gif" alt="Segundas Jornadas de Software Libre" title="Segundas Jornadas de Software Libre" height="60" width="468" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Hace algunos meses enviamos nuestro abastrar para estar presentes en Las 2das Jornadas de SL en la localidad de San Francisco provincia de Cordoba , y gracias a Dios nuestra charla a sido seleccionada para este importante evento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1961524722707656393?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1961524722707656393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1961524722707656393'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/05/sqlite-latino-presente.html' title='Sqlite Latino Presente'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-2851999453481432277</id><published>2008-05-06T16:32:00.000-07:00</published><updated>2008-05-06T18:53:59.411-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prensa'/><title type='text'>Sqlite en la revista  Linux+</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lpmagazine.org/prt/view/pag-prin/issue/821.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.infosertec.com.ar/blog/wp-content/uploads/linux_dvd_maj_es_431.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Mucho de este tiempo le hemos dedicado, esfuerzo conjunto,  Daniel y Yo. En  escribir, una Guia Completa de  sqlilte, para la revista&lt;a href="http://www.lpmagazine.org/prt/view/pag-prin/issue/821.html"&gt; linux+&lt;/a&gt;  ,  la mayor revista europea especializada en gnu/linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-2851999453481432277?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2851999453481432277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2851999453481432277'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/05/sqlite-en-la-revista-linux.html' title='Sqlite en la revista  Linux+'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-4367035976178528294</id><published>2008-04-26T07:29:00.000-07:00</published><updated>2008-04-26T07:31:42.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charla de SqliteLatino'/><title type='text'></title><content type='html'>&lt;div style="width:425px;text-align:left" id="__ss_343070"&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=charlasqlitesalta-1207702332491479-8"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=charlasqlitesalta-1207702332491479-8" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;&lt;a href="http://www.slideshare.net/?src=embed"&gt;&lt;img src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/&gt;&lt;/a&gt; | &lt;a href="http://www.slideshare.net/cabero/charla-sqlite-salta?src=embed" title="View 'Charla SQlite Salta' on SlideShare"&gt;View&lt;/a&gt; | &lt;a href="http://www.slideshare.net/upload?src=embed"&gt;Upload your own&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-4367035976178528294?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4367035976178528294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4367035976178528294'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/04/view-upload-your-own.html' title=''/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-3130661430602814766</id><published>2008-04-09T22:05:00.000-07:00</published><updated>2008-04-09T22:07:45.345-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Presentacion'/><title type='text'>Introducción a SQLite en Adobe Air</title><content type='html'>&lt;div style="width: 425px; text-align: left;" id="__ss_339876"&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=sqliteonair-1207560377746280-8"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=sqliteonair-1207560377746280-8" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;&lt;a href="http://www.slideshare.net/?src=embed"&gt;&lt;img src="http://static.slideshare.net/swf/logo_embd.png" style="border: 0px none ; margin-bottom: -5px;" alt="SlideShare" /&gt;&lt;/a&gt; | &lt;a href="http://www.blogger.com/undefined" title="View this slideshow on SlideShare"&gt;View&lt;/a&gt; | &lt;a href="http://www.slideshare.net/upload"&gt;Upload your own&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;embed src="http://counters.gigya.com/wildfire/CIMP/Jmx*PTEyMDc4MDM5MDY3OTAmcHQ9MTIwNzgwMzkyOTU4MiZwPTEwMTkxJmQ9Jm49.swf" flashvars="" type="application/x-shockwave-flash" height="0" width="0"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-3130661430602814766?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3130661430602814766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3130661430602814766'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/04/introduccin-sqlite-en-adobe-air.html' title='Introducción a SQLite en Adobe Air'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-868978437831716153</id><published>2008-04-01T17:59:00.000-07:00</published><updated>2008-04-02T08:04:23.687-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y PhP'/><title type='text'>SQLite y PHP 1</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uJwbWnvfNFg/R_LbUmv2RxI/AAAAAAAAAGE/_vit5lw86fw/s1600-h/PhpBase_logo_600x600.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_uJwbWnvfNFg/R_LbUmv2RxI/AAAAAAAAAGE/_vit5lw86fw/s200/PhpBase_logo_600x600.png" alt="" id="BLOGGER_PHOTO_ID_5184447268101965586" border="0" /&gt;&lt;/a&gt;En la versión 4 de PHP, SQLite se podía utilizar como base de datos instalando un módulo PECL. A partir de la versión 5 de PHP, SQLite está incluido en PHP, por lo que está disponible sin necesidad de realizar ninguna instalación adicional, realmente una ventaja a la hora de programar y se puede observar la gran aceptación de este pseudo motor.&lt;br /&gt;Los nombres de las funciones de PHP que permiten utilizar y manipular SQLite en PHP empiezan por sqlite_ y son similares a los que permiten acceder a otras bases de datos utilizables desde PHP (MySQL, PostgreSQL, etc). El manual de PHP incluye un capítulo dedicado a SQLite, es por ello que nos va a permitir programar mas rápidamente y acostumbrarnos a la sintaxis de una forma casi inmediata.&lt;br /&gt;Creación/Acceso a la base de datos&lt;br /&gt;En SQLite, una base de datos es normalmente un fichero, aunque también pueden abrirse bases de datos en memoria. Este concepto ya lo vimos al principio. Por esta razón necesitamos un mecanismo para poder abrir la base de datos, la función es sqlite_open(). El argumento de sqlite_open() es la ruta del archivo en el servidor (o :memory: en el caso de crear la base de datos en memoria). En caso de que la base de datos no exista, la función se encarga de crear una base de datos nueva. La función devuelve un manejador (handle), que se utiliza en el resto de funciones que acceden a la base de datos. En el siguiente ejemplo, la variable $rutadb almacena la ruta o path de donde se encuentra la base de datos y la variable $db el manejador de la base de datos:&lt;br /&gt;&lt;?php&lt;br /&gt;$rutadb = "prueba.db";&lt;br /&gt;$db = sqlite_open($rutadb) or die("No es posible abir la base de datos ");&lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-868978437831716153?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/868978437831716153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/868978437831716153'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/04/sqlite-y-php-1.html' title='SQLite y PHP 1'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uJwbWnvfNFg/R_LbUmv2RxI/AAAAAAAAAGE/_vit5lw86fw/s72-c/PhpBase_logo_600x600.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7135131361594284817</id><published>2008-04-01T17:38:00.000-07:00</published><updated>2008-04-02T08:05:07.603-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Presentacion'/><title type='text'>Historia de Sqlite</title><content type='html'>Hace unos dias un grupo de colegas en linea me preguntaron como nace , sqlite , bueno aqui les dejo , una&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.educared.org.ar/vicaria/wl/archivo/343_Recursos_historia_espaniol.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://www.educared.org.ar/vicaria/wl/archivo/343_Recursos_historia_espaniol.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Breve Historia de SQLite &lt;/span&gt;&lt;br /&gt;Cuando D. Richard Hipp trabajaba desarrollando&lt;br /&gt;software para la fuerza naval de los Estados Unidos, comenzó a desarrollar SQLite , según él cuenta con sus propias palabras: SQLite surgió de una necesidad personal, para mi propio uso. En enero de 2000 yo estaba trabajando con un equipo de la General Dynamics en la Fuerza naval de los Estados Unidos, en un proyecto de software, el cual se conectaba a una base de datos Informix, el motor funcionaba muy bien, pero habíamos tenido problemas para hacer una reconfiguración cuando el sistema se reiniciaba. Luego cambiamos a PostgreSQL, pero administrar la base de datos era un problema. Si bien aún estaba luchando para hacer frente a estas cuestiones, surgió la idea de escribir un simple motor de base de datos SQL que permitiera leer los archivos del disco duro, y luego ser llamados en diferentes solicitudes. Cinco meses más tarde, yo estaba sin un contrato por algunos unos meses y por lo que comencé a escribir SQLite, con el pensamiento de que sería útil en algún problema similar, más adelante. (Extracto del Prólogo de SQLite escrito por Richard Hipp).&lt;br /&gt;&lt;br /&gt;Hay mas informacion en el Prologo de presentacion en el Sitio oficial.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7135131361594284817?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7135131361594284817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7135131361594284817'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/04/historia-de-sqlite.html' title='Historia de Sqlite'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-5567637356409121015</id><published>2008-03-13T14:06:00.000-07:00</published><updated>2008-04-02T08:04:52.752-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prensa'/><title type='text'>Richard Hipp en FLOSS</title><content type='html'>&lt;div align="justify"&gt;&lt;a href="http://www.twit.tv/sites/all/themes/twit/img/podcasts/podcast_5.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 158px; CURSOR: hand; HEIGHT: 169px" height="169" alt="" src="http://www.twit.tv/sites/all/themes/twit/img/podcasts/podcast_5.jpg" border="0" /&gt;&lt;/a&gt;Hace alguanos dia aparecio este audio comentario de richard hipp en un podcats, el adudio desafortunadamente esta en ingles.. la direccion urls es la siguiente &lt;a href="http://www.twit.tv/floss26"&gt;http://www.twit.tv/floss26&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Saludos Gerardo Antonio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-5567637356409121015?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5567637356409121015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5567637356409121015'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/03/richard-hipp-en-floss.html' title='Richard Hipp en FLOSS'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7040097913645731558</id><published>2008-02-28T15:56:00.000-08:00</published><updated>2008-04-02T08:04:42.534-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prensa'/><title type='text'>Adoble se une a la SQLite Consortium</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bujiacreativa.com/blog/wp-content/uploads/2007/12/4_adobe.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.bujiacreativa.com/blog/wp-content/uploads/2007/12/4_adobe.jpg" alt="" border="0" /&gt;&lt;/a&gt;Adobe se ha unido a &lt;span style="font-style: italic;"&gt;Mozilla&lt;/span&gt; y a &lt;span style="font-style: italic;"&gt;Symbian&lt;/span&gt; para soportar el trabajo del &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Consortium&lt;/span&gt;, que es asegurar el que los desarrolladores de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; tienen los recursos ($) suficientes para continuar mejorando esta base de datos tan pequeña como poderosa, flexibile y popular.&lt;br /&gt;&lt;br /&gt;Esta decisión coincide oportunamente con el lanzamiento del nuevísimo Adobe Integrated Runtime (AIR), el entorno de ejecución para crear aplicaciones ricas para Internet usando Flash, Flex, HTML y Ajax que también pueden instalarse como aplicaciones para el escritorio, de una manera similar a como también puede hacerlo el Silverlight de Microsoft.&lt;br /&gt;&lt;br /&gt;Adobe también usa &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; en su producto Photoshop Elements desde su versión 6.0 en lugar del Microsoft Access que usaba antes.&lt;br /&gt;&lt;br /&gt;Articulo completo &lt;a href="http://www.theregister.co.uk/2008/02/26/adobe_sqlite_consortium/"&gt;The Register&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7040097913645731558?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7040097913645731558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7040097913645731558'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/02/adoble-se-une-la-sqlite-consortium.html' title='Adoble se une a la SQLite Consortium'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-5021501172863604130</id><published>2008-02-24T17:28:00.000-08:00</published><updated>2008-04-02T08:04:52.753-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prensa'/><title type='text'>Sqlite Video de Richard Hipp</title><content type='html'>&lt;div align="justify"&gt;Aqui les dejo un video de Richard Hipp el creador de Sqlite, recomiendo que lo vean puesto que explica muchos sobre el funcionamiento interno de sqlite, el unico inconveninete es que tiene subitulos en ingles, desde ya invito a que alguien nos ayude a traducirlo..&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://video.google.com/videoplay?docid=-5160435487953918649"&gt;Video&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Saludos Gerardo Antonio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-5021501172863604130?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5021501172863604130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5021501172863604130'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/02/sqlite-video-de-richard-hipp.html' title='Sqlite Video de Richard Hipp'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-3782240697350793005</id><published>2008-02-07T06:34:00.000-08:00</published><updated>2008-02-07T06:46:23.347-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Practica y Ejemplos'/><title type='text'>Sqlite Con Air y Flex</title><content type='html'>Hoy navegando en internet me tope con este interesante,un  ejemplo de como trabajar con  &lt;a href="http://www.cristalab.com/tips/51562/manejo-de-una-base-de-datos-sqlite-con-air-y-flex"&gt;Air  y Flex&lt;/a&gt; dos tecnologias de Adobe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-3782240697350793005?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3782240697350793005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3782240697350793005'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/02/sqlite-con-air-y-flex.html' title='Sqlite Con Air y Flex'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1125399166589789422</id><published>2008-02-07T05:37:00.000-08:00</published><updated>2008-02-23T11:35:48.654-08:00</updated><title type='text'>Necesitamos Tu Ayuda</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://3.bp.blogspot.com/_uJwbWnvfNFg/R6sO-1z6z1I/AAAAAAAAADs/bgJl74vZtfo/s1600-h/Hand%2520extend%2520for%2520shake.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5164237870469926738" style="margin: 0px 0px 10px 10px; float: right;" alt="" src="http://3.bp.blogspot.com/_uJwbWnvfNFg/R6sO-1z6z1I/AAAAAAAAADs/bgJl74vZtfo/s320/Hand%2520extend%2520for%2520shake.jpg" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Amigos lectores de Sqlite-Latino , hemos visto que actualmente tenemos muchas visitas de todos los lugares de hablas hispana desde Tierra del Fuego en Argentina , hasta Madrid España Queremos invitarlos a formar parte de la comunidad puesto que actualmente nos econtramos saturardos daniel  y yo. Asi mismo tenemos mucha informacion, con de sqlite en ingles y necesitamos que nos ayuden en la traduccion y que se sumen a la movida de sqlite &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;desde ya muchas gracias&lt;br /&gt;gerardo antonio cabero &lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1125399166589789422?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1125399166589789422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1125399166589789422'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/02/necesitamos-tu-ayuda.html' title='Necesitamos Tu Ayuda'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uJwbWnvfNFg/R6sO-1z6z1I/AAAAAAAAADs/bgJl74vZtfo/s72-c/Hand%2520extend%2520for%2520shake.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8996299593069396774</id><published>2008-02-03T15:41:00.000-08:00</published><updated>2008-02-07T06:44:17.683-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoftSqlite'/><title type='text'>SqliteMan</title><content type='html'>Es una herramientas, grafica que nos permite Administrar nuestrea base de datos atraves echcas con Sqlite su Instalcion es la siguiente forma:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;code&gt;apt-get install sqliteman&lt;/code&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Sqliteman permite Modificar, Actulizar, de una manera rapida.&lt;br /&gt;&lt;br /&gt;Documentacion de &lt;a href="http://sqliteman.com/docs/user/en/index.html"&gt; SqliteMan&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8996299593069396774?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8996299593069396774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8996299593069396774'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/02/sqliteman.html' title='SqliteMan'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-6517788046242118795</id><published>2008-01-23T13:51:00.000-08:00</published><updated>2008-02-07T06:45:40.101-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='De SQL a SQLite'/><title type='text'>Realizar Backup Con Sqlite</title><content type='html'>&lt;a href="http://www.ticsevolution.com/fotos/backup-online.jpg"&gt;&lt;img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 320px; CURSOR: hand" alt="" src="http://www.ticsevolution.com/fotos/backup-online.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Como venimos esplicando en con sqlite se puden realizar migrar datos, dentre diferente fuentes. en tes caso mostraremos como realizar las copias des segurridad de las tablas de la base de datos usando el comando ".output".&gt;&lt;code&gt;&lt;/p&gt;&lt;/code&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;sqlite&gt; .output backup.sql &lt;/strong&gt;&lt;span style="font-size:85%;"&gt;(Asignamos el nombre del Archivo)&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;sqlite&gt; .mode insert personal&lt;/strong&gt; &lt;span style="font-size:85%;"&gt;(El modo que trabajaremos sera backup de insercion)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;sqlite&gt; .schema personal&lt;/strong&gt; &lt;span style="font-size:85%;"&gt;(Mostraremos el esquema de creacion de la tabla)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;sqlite&gt; SELECT * FROM personal ;&lt;/strong&gt; &lt;span style="font-size:85%;"&gt;(selecionamos todos los datos desde la tabla personal)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;sqlite&gt; .quit&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Y asi optendremos un archivo .sql con todas las entradas listas para ser insertadas nuevamentes y con la estructura de la base de datos.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-6517788046242118795?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6517788046242118795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6517788046242118795'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/01/realizar-backup-con-sqlite.html' title='Realizar Backup Con Sqlite'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8943075976697755028</id><published>2008-01-18T18:19:00.001-08:00</published><updated>2008-01-18T18:20:25.465-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Practica y Ejemplos'/><title type='text'>Como migrar una Base de Datos de Access a SQLite</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img501.imageshack.us/img501/7/microsoftaccess20021968br1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://img501.imageshack.us/img501/7/microsoftaccess20021968br1.jpg" alt="" border="0" /&gt;&lt;/a&gt;A pedido de &lt;span style="font-style: italic;"&gt;Guille&lt;/span&gt; en donde nos pedia si podíamos ver como migrar de una Base de Datos de &lt;span style="font-weight: bold;"&gt;Access&lt;/span&gt; a &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;, buscando en internety bueno chequeando la información obtenida les paso a contar como es posible realizar esta acción.&lt;br /&gt;&lt;br /&gt;En primer lugar necesitas tener instalado mdbtools, que son un par de herramientas para manipular Bases de Datos de Access. Esto es muy facil de instalar:&lt;br /&gt;&lt;br /&gt;$ &lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;code&gt;sudo apt-get install mdbtools&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y obviamente descontamos que ya tienes instalado en tu maquina sqlite3.&lt;br /&gt;&lt;br /&gt;Para este ejemplo les comento que encontre por ahy un ejemplo de base de dato de Access llamada &lt;span style="font-style: italic;"&gt;Empresa.mdb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora veamos como empezar a trabajar, primero vamos a pasar de mdb a sql y lo vamos a llevar a cabo en dos faces, primero por el esquema, donde aparece la definición de los datos y segundo por los datos que contiene nuestra base de datos. Para ello realizamos lo siguiente:&lt;br /&gt;&lt;br /&gt;$ &lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;mdb-schema Empresa.mdb &gt; esquema.sql&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora puedes visualizar el archivo "esquema.sql" y verás como esta la definición de las tablas, los campos, etc.&lt;br /&gt;&lt;br /&gt;$ &lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;mdb-export -H -I Empresa.mdb Empleados &gt; datos.txt&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo que hicimos ahora fue migrar el contenido de la tabla "Empleados" al archivo "datos.txt", si se fijan este archivo cuenta con los correspondientes INSERT, VALUES, etc. Pero a todo esto tenemos un pequeño problema cada líne de INSERT no finaliza con un ";" como debería de ser en SQLite, pero esto nuevamente se soluciona muy facilmente:&lt;br /&gt;&lt;br /&gt;$ &lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;cat datos.txt | sed -e 's/")/");/g' &gt; datos.temp&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora bien es el archivo "datos.temp" quien ya fueron formateados los datos para la total migración a SQLite.&lt;br /&gt;Por último nos queda finalizar la migración total a SQLite de la siguiente forma:&lt;br /&gt;&lt;br /&gt;$ &lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;sqlite3 migracion.db&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;SQLite version 3.4.2&lt;br /&gt;Enter ".help" for instructions&lt;br /&gt;sqlite&gt; &lt;span style="font-weight: bold;"&gt;.read esquema.sql&lt;/span&gt;&lt;br /&gt;SQL error near line 9: no such table: Empleados&lt;br /&gt;sqlite&gt; &lt;span style="font-weight: bold;"&gt;.read datos.temp&lt;/span&gt;&lt;br /&gt;sqlite&gt; &lt;span style="font-weight: bold;"&gt;.dump&lt;/span&gt;&lt;br /&gt;BEGIN TRANSACTION;&lt;br /&gt;CREATE TABLE Empleados&lt;br /&gt;(&lt;br /&gt;  Clave                   Integer,&lt;br /&gt;  Puesto                  Text (20),&lt;br /&gt;  Nombre                  Text (50),&lt;br /&gt;  Email                   Text (50)&lt;br /&gt;);&lt;br /&gt;INSERT INTO "Empleados" VALUES(1,'Capo','Manuel Caro Quintero','mafia@sinaloa.com');&lt;br /&gt;INSERT INTO "Empleados" VALUES(2,'Comandante','Ventura','PGR@sinaloa.com');&lt;br /&gt;INSERT INTO "Empleados" VALUES(3,'Administrador','Lic. Palma','guero_palma@sinaloa.com');&lt;br /&gt;COMMIT;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;vemos como de manera exitosa migramos los datos desde una Base de Datos de &lt;span style="font-weight: bold;"&gt;Access&lt;/span&gt; a &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;. Para finalizar veamos si realmente contamos con todos los datos y nuevamente revisamos.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;sqlite&gt; &lt;span style="font-weight: bold;"&gt;.tables&lt;/span&gt;&lt;br /&gt;Empleados&lt;br /&gt;sqlite&gt; &lt;span style="font-weight: bold;"&gt;select * from Empleados;&lt;/span&gt;&lt;br /&gt;1|Capo|Manuel Caro Quintero|mafia@sinaloa.com&lt;br /&gt;2|Comandante|Ventura|PGR@sinaloa.com&lt;br /&gt;3|Administrador|Lic. Palma|guero_palma@sinaloa.com&lt;br /&gt;sqlite&gt; &lt;span style="font-weight: bold;"&gt;.quit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Bueno ojalá que le sea útil y como siempre las dudas y preguntas la debatimos entre todos. Muchas Gracias y hasta la proxima...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8943075976697755028?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8943075976697755028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8943075976697755028'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/01/como-migrar-una-base-de-datos-de-access.html' title='Como migrar una Base de Datos de Access a SQLite'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-4302278683279580205</id><published>2008-01-15T14:17:00.001-08:00</published><updated>2008-02-07T06:45:02.869-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoftSqlite'/><title type='text'>SQLite Manager</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sqlitemanager.mozdev.org/screenshots/mainview.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://sqlitemanager.mozdev.org/screenshots/mainview.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Es una extension Firefox para minupular bases de datos con SQLite, se ella se puden crear crear tablas e índices, navegar en los archivos ejecutar consultas SQL. y Modificar los registros .&lt;br /&gt;Mas informacion en&lt;br /&gt;http://sqlitemanager.mozdev.org/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-4302278683279580205?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4302278683279580205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4302278683279580205'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/01/sqlite-manager.html' title='SQLite Manager'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1755208888921120592</id><published>2008-01-02T19:09:00.000-08:00</published><updated>2008-01-02T19:18:19.684-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Python'/><title type='text'>Escribiendo datos con Python</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://linuxventanitas.files.wordpress.com/2007/08/python.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 145px; height: 127px;" src="http://linuxventanitas.files.wordpress.com/2007/08/python.png" alt="" border="0" /&gt;&lt;/a&gt;Bueno una ves realizada la conexión como vimos en el primer post de integración entre &lt;a href="http://sqlite-latino.blogspot.com/2007/12/python-sqlite.html"&gt;&lt;span style="font-weight: bold;"&gt;SQLite y Python&lt;/span&gt;&lt;/a&gt;, ya estamos dispuestos a crear y guardar datos en nuestra Base de Datos creada. Para hacer esto debemos ejecutar un método de nuestro cursor llamado execute pasándole como parámetro nuestra consulta. En este primer ejemplo vamos a crear un Tabla.&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt;&lt;code&gt; &lt;span style="font-size:130%;"&gt;cursor.execute('CREATE TABLE personal (id INTEGER PRIMARY KEY, apellido VARCHAR(50), nombre VARCHAR(50), email VARCHAR(100))')&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ahora que ya tenemos creado nuestra tabla podemos comenzar a cargarles información nuevamente convocando el método execute de nuestro objeto cursor.&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="font-size:130%;"&gt;&lt;code&gt;cursor.execute('INSERT INTO personal VALUES (null, "Ramos", "Juan", "juan_85@gmail.com")')&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt;&lt;code&gt; &lt;span style="font-size:130%;"&gt;cursor.execute('INSERT INTO personal VALUES (null, "Juarez", "Martín", "martin58j@gmail.com")')&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Estos ejemplos son a modo de visualizar el modo en la cual se pueden almacenar datos en nuestra base de datos, la librería pysqlite nos permite almacenar datos de otra manera utilizando variables que por ejemplo hemos recuperado de algún Form o Widget.&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="font-size:130%;"&gt;&lt;code&gt;apellido = "Gomes"&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="font-size:130%;"&gt;&lt;code&gt;nombre   = "Carlos"&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="font-size:130%;"&gt;&lt;code&gt;email    = "gcarlos@yahoo.com"&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="font-size:130%;"&gt;&lt;code&gt;cursor.execute('INSERT INTO personal VALUES (null, ?, ?, ?)', (apellido, nombre, email))&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una ves que terminamos de hacer los cambios debemos almacenar estos datos de manera permanente invocando al método commit del nuestro objeto conexion.&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="font-size:130%;"&gt;&lt;code&gt;conexion.commit()&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si intentas cerrar una conexión que ha sido modificada sin invocar al metodo commit, pysqlite planteará un error, este comportamiento puede causar problemas, sin embargo si ustedes no desean guardar los cambios que se han efectuado pueden convocar al método rollback de nuestro objeto conexión.&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; &lt;span style="font-size:130%;"&gt;&lt;code&gt;conexion.rollback()&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En la siguiente entrega vamos ver diferentes formar de recuperar los datos que almacenamos en nuestra Base de Datos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1755208888921120592?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1755208888921120592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1755208888921120592'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/01/escribiendo-datos-con-python.html' title='Escribiendo datos con Python'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-2868717900878121634</id><published>2008-01-02T17:56:00.000-08:00</published><updated>2008-01-02T18:01:52.486-08:00</updated><title type='text'>FELIZ 2008</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uJwbWnvfNFg/R3xBfdznSEI/AAAAAAAAACg/9m22ywou3k8/s1600-h/SQliteLatino.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_uJwbWnvfNFg/R3xBfdznSEI/AAAAAAAAACg/9m22ywou3k8/s320/SQliteLatino.PNG" alt="" id="BLOGGER_PHOTO_ID_5151064082637867074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Feliz 2008 les desea SQLite-Latino .&lt;br /&gt;Daniel Maldonado y Gerardo  Cabero&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-2868717900878121634?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2868717900878121634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2868717900878121634'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2008/01/feliz-2008-les-desea-sqlite-latino.html' title='FELIZ 2008'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uJwbWnvfNFg/R3xBfdznSEI/AAAAAAAAACg/9m22ywou3k8/s72-c/SQliteLatino.PNG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7640338054075696120</id><published>2007-12-27T21:53:00.000-08:00</published><updated>2007-12-27T21:58:41.741-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='De SQL a SQLite'/><title type='text'>ANALYZE</title><content type='html'>El comando &lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;ANALYZE&lt;/code&gt;&lt;/span&gt; reúne estadísticas sobre los índices y las almacena en un especial de tablas en la base de datos donde el optimizador de consultas puede utilizar para ayudar a hacer un mejor índice de opciones. Si no se dan argumentos, todos los índices en todas las Bases de Datos adjuntos se analizan. Si un nombre de base de datos se da como argumento, todos los índices en una Base de Datos que se analizan. Si el argumento es un nombre de tabla, entonces sólo los índices asociados a una tabla que se analizan.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;Sql-declaración:: = ANALYZE&lt;br /&gt;Sql-declaración:: = ANALYZE nombre de la base de datos&lt;br /&gt;Sql-declaración:: = ANALYZE [nombre de la base de datos.] nombre de la tabla&lt;/code&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7640338054075696120?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7640338054075696120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7640338054075696120'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/analyze.html' title='ANALYZE'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7028948661462751374</id><published>2007-12-25T11:33:00.000-08:00</published><updated>2007-12-25T11:39:36.977-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='De SQL a SQLite'/><title type='text'>ALTER TABLE</title><content type='html'>En &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;, la version del comando &lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;ALTER TABLE&lt;/code&gt;&lt;/span&gt; permite al usuario cambiar el nombre o agregar una nueva columna a una Tabla ya existente, no es posible eliminar una columna de una Tabla.&lt;br /&gt;&lt;br /&gt;La sintaxis es la siguiente:&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;Declaracion-sql :: = ALTER TABLE [nombre de la base de datos .] Tabla&lt;br /&gt;Alteración           :: = RENAME TO nuevo nombre de la Tabla&lt;br /&gt;Alteración           :: = ADD [nombre de la columna] descripción&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La sintaxis &lt;span style="font-size:130%;"&gt;&lt;code&gt;RENAME TO&lt;/code&gt;&lt;/span&gt; se usa para cambiar el nombre de la Tabla escogida por un nuevo nombre que le queramos asignar. Con este comando no se puede mover una Tabla entre las Bases de Datos adjuntas, sólo para cambiar el nombre de una Tabla dentro de la misma Base de Datos.&lt;br /&gt;&lt;br /&gt;El comando &lt;span style="font-size:130%;"&gt;&lt;code&gt;ADD [nombre de la columna]&lt;/code&gt;&lt;/span&gt; se utiliza para gregar una nueva columna o atributo a la Tabla existente. Esta nueva columna es agregada siempre al final de la lista como último atributo.&lt;br /&gt;&lt;br /&gt;El tiempo de ejecución del comando &lt;span style="font-size:130%;"&gt;&lt;code&gt;ALTER TABLE&lt;/code&gt;&lt;/span&gt; es independiente de la cantidad de datos en la Tabla. El comando &lt;span style="font-size:130%;"&gt;&lt;code&gt;ALTER TABLE&lt;/code&gt;&lt;/span&gt; se ejecuta con la mayor rapidez sobre una Tabla con 10 millones de filas como lo hace sobre una Tabla con 1 sola fila.&lt;br /&gt;&lt;br /&gt;Ejemplo propuesto:&lt;br /&gt;&lt;br /&gt;Para este ejemplo vamos a suponer que contamos con una Base de Datos ya creada en la cual además hemos creados otras tablas, ingresamos a la base de datos he intentemos cambiar el nombre y agregar una columna a algunas de sus tablas.&lt;br /&gt;&lt;br /&gt;En mi caso les muestro las tablas que tengo ejecutando:&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;sqlite&gt; .tables&lt;br /&gt;personal&lt;br /&gt;sqlite&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y ahora les muestro cual es su esquema:&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;sqlite&gt; .schema personal&lt;br /&gt;CREATE TABLE 'personal' (&lt;br /&gt;id smallint primary key,&lt;br /&gt;apellido varchar(100),&lt;br /&gt;nombre varchar(100),&lt;br /&gt;direccion varchar(200)&lt;br /&gt;);&lt;br /&gt;sqlite&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;bueno ahora intentemos cambiarle el nombre:&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;sqlite&gt; ALTER TABLE personal&lt;br /&gt;  ...&gt; RENAME TO personales;&lt;br /&gt;sqlite&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ahora con el nuevo nombre de la Tabla, agreguemos una columna:&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;sqlite&gt; ALTER TABLE personales&lt;br /&gt;  ...&gt; ADD telefono varchar(15);&lt;br /&gt;sqlite&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entonces de esta manera tan simple pudimos no solamente modificar el nombre de la tabla si no que además agregarle un campo a la misma.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7028948661462751374?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7028948661462751374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7028948661462751374'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/alter-table.html' title='ALTER TABLE'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1821955687547799813</id><published>2007-12-25T10:40:00.000-08:00</published><updated>2007-12-27T22:02:34.411-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='De SQL a SQLite'/><title type='text'>De SQL a SQLite</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://weblog.bignerdranch.com/images/managerx.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 214px; height: 199px;" src="http://weblog.bignerdranch.com/images/managerx.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; entiende la mayor parte de la lengua estándar &lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt;. Lo que pasa es que se omitan algunas características, al mismo tiempo, añadiendo algunas características de su propia.&lt;br /&gt;&lt;br /&gt;Lo que vamos a ver a partir de ahora es intenta describir con precisión qué partes del lenguaje &lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt; son similares a &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; y cuáles no. Una lista de palabras clave también es proporcionada.&lt;br /&gt;&lt;br /&gt;Es por ello que para comenzar a ver estas sintaxis vamos a listar muchas de las palabras claves y comando que vamos a utilizar y de ese modo vamos a particularizarlos a cada uno.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; implementa las siguientes sintaxis:&lt;br /&gt;&lt;ul&gt;&lt;li style="font-weight: bold;"&gt;&lt;a href="http://sqlite-latino.blogspot.com/2007/12/alter-table.html"&gt;ALTER TABLE&lt;/a&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;&lt;a href="http://sqlite-latino.blogspot.com/2007/12/analyze.html"&gt;ANALIYZE&lt;/a&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;ATTACH DATABASE&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1821955687547799813?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1821955687547799813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1821955687547799813'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/de-sql-sqlite.html' title='De SQL a SQLite'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-3529863283552966487</id><published>2007-12-20T16:06:00.000-08:00</published><updated>2007-12-20T16:30:34.920-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Prensa'/><title type='text'>Gracias a TuxInfo!!!!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.tuxinfo.com.ar/tuxinfo/?p=21"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://farm3.static.flickr.com/2228/2099746524_9e589a2ab5.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Les comentamos que en el día de la fecha la gente de la revista digital &lt;span style="font-weight: bold;"&gt;TuxInfo&lt;/span&gt;, nos realizó una antrevista comentando y apoyando esta comunidad de &lt;span style="font-weight: bold;"&gt;SQLite Latino&lt;/span&gt;. Una entrevista en donde tratamos de presentarles e informarles hacerca de este proyecto y la manera en la cual pueden colaborar.&lt;br /&gt;&lt;br /&gt;En primer lugar queríamos agradecerles a Franco quien fue el que realizo la entrevista muy amablemente y como una propuesta de él.&lt;br /&gt;&lt;br /&gt;Tambíen queremos agradecer a la gente que trabaja en &lt;span style="font-weight: bold;"&gt;TuxInfo&lt;/span&gt; y en especial a &lt;span style="font-weight: bold;"&gt;Ariel&lt;/span&gt; director de la misma por el apoyo constante al Movimiento del Software Libre.&lt;br /&gt;&lt;br /&gt;Y por último los invitamos a que vean no solamente la nota sino también que disfruten y se informen con esta revista mensual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-3529863283552966487?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3529863283552966487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3529863283552966487'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/gracias-tuxinfo.html' title='Gracias a TuxInfo!!!!'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7293616235221856406</id><published>2007-12-10T18:39:00.000-08:00</published><updated>2007-12-10T18:43:10.677-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos No apropiados'/><title type='text'>Uso No apropiado con Alto Concurrencia</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/TRANS02_archivos/image011.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 216px; height: 207px;" src="http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/TRANS02_archivos/image011.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; utilizando lector/escritor esclusas de la totalidad del archivo de las Base de Datos. Esto significa que si cualquier proceso es la lectura de cualquier parte de la base de datos, todos los demás procesos se impide a la escritura de cualquier otra parte de la base de datos.&lt;br /&gt;&lt;br /&gt;Del mismo modo, si un proceso es cualquier escrito a la base de datos, todos los demás procesos se impide que la lectura de cualquier otra parte de la base de datos. Cada aplicación de Base de Datos hace su trabajo y pasa rápidamente, y no de bloqueo dura más de algunas decenas de milisegundos.&lt;br /&gt;&lt;br /&gt;Sin embargo, hay algunas aplicaciones que requieren una mayor concurrencia, y las aplicaciones pueden necesidad de buscar una solución diferente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7293616235221856406?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7293616235221856406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7293616235221856406'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/uso-no-apropiado-con-alto-concurrencia.html' title='Uso No apropiado con Alto Concurrencia'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-821239039518983880</id><published>2007-12-10T18:31:00.000-08:00</published><updated>2007-12-10T18:37:41.485-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos No apropiados'/><title type='text'>Uso No apropiado con Datos muy Grandes</title><content type='html'>Cuando se inicia una operación de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; (lo que sucede automáticamente antes de cualquier operación de escritura que no está dentro de una explícita &lt;span style="font-size:130%;"&gt;&lt;code&gt;BEGIN ... COMMIT&lt;/code&gt;&lt;/span&gt;) el motor tiene que asignar un mapa de bits de páginas sucias en el archivo de disco para ayudarle a manejar su revertir la revista. &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; necesidades de 256 bytes de RAM para cada 1MiB de base de datos (asumiendo un 1024 bytes tamaño de página: menos memoria se utiliza con mayor tamaño de la página, por supuesto).&lt;br /&gt;&lt;br /&gt;Para bases de datos más pequeñas, la cantidad de memoria necesaria no es un problema, pero cuando la base de datos comenzó a desarrollarse en el multi-gigabyte gama, el tamaño del mapa de bits puede conseguir bastante grande. Si tiene que almacenar y modificar más de algunas decenas de GB de datos, usted debería considerar la posibilidad de utilizar otro Motor de Base de Datos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-821239039518983880?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/821239039518983880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/821239039518983880'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/uso-no-apropiado-con-datos-muy-grandes.html' title='Uso No apropiado con Datos muy Grandes'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-5333775526185158244</id><published>2007-12-07T06:29:00.000-08:00</published><updated>2007-12-07T06:35:12.510-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos No apropiados'/><title type='text'>Uso No apropiado en Sitios web de Alto Volúmen</title><content type='html'>&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; normalmente funciona bien como el de Base de Datos a un sitio web. Pero si este Sitio Web es tan ocupados que están pensando en su división de componentes fuera de la Base de Datos en una máquina separada, entonces usted debería considerar el uso de un Motor de Base de Datos de tipo cliente/servidor en lugar del Motor de Base de Datos de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-5333775526185158244?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5333775526185158244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5333775526185158244'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/uso-no-apropiado-en-sitios-web-de-alto.html' title='Uso No apropiado en Sitios web de Alto Volúmen'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8301750291032344556</id><published>2007-12-05T19:59:00.000-08:00</published><updated>2007-12-05T20:08:03.754-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos No apropiados'/><title type='text'>Usos no Apropiados para usar SQLite - Aplicaciones Cliente/Servidor</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.richardcrebeck.com/cclca/images/index.2.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.richardcrebeck.com/cclca/images/index.2.gif" alt="" border="0" /&gt;&lt;/a&gt;Seguramente si tienes muchos programas clientes que acceden a una Base de Datos común en una Red, usted debería considerar el uso de un Motor de Base de Datos &lt;span style="font-style: italic;"&gt;Cliente/Servidor&lt;/span&gt; en lugar de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; trabajará a través de una red de archivos, pero debido a la latencia asociado con la mayoría de sistemas de archivos de red, el rendimiento no será grande. Asimismo, el bloqueo de archivos lógica de muchos sistemas de ficheros de red contiene errores de aplicación (en ambos Unix y ventanas). Si el bloqueo de ficheros no funciona como debería, podría ser posible que dos o más programas cliente para modificar la misma parte de la misma base de datos al mismo tiempo, la corrupción en la base de datos resultante. Debido a que este problema se debe a fallos en el sistema de ficheros subyacente aplicación, no hay nada &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; puede hacer para evitarlo.&lt;br /&gt;&lt;blockquote&gt;Una buena regla general es que usted debe evitar el uso de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; en situaciones en las que la misma Base de Datos será accesible al mismo tiempo de muchas computadoras a través de una red de archivos.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8301750291032344556?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8301750291032344556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8301750291032344556'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/usos-no-apropiados-para-usar-sqlite.html' title='Usos no Apropiados para usar SQLite - Aplicaciones Cliente/Servidor'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1270235752691018627</id><published>2007-12-04T07:22:00.000-08:00</published><updated>2007-12-04T15:42:54.154-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Java'/><title type='text'>Java y SQLite - Parte I</title><content type='html'>&lt;a href="http://farm1.static.flickr.com/32/53624909_dc08e1ad68_m.jpg"&gt;&lt;img style="margin: 0px 0px 10px 10px; float: right; width: 170px;" alt="" src="http://farm1.static.flickr.com/32/53624909_dc08e1ad68_m.jpg" border="0" height="217" /&gt;&lt;/a&gt;Desde hace mucho tiempo -Varias Lunas- en sqlite-latino, de la mano de daniel se viene realizado la entrega teórica de sqlite, por trabajar con el , ventaja , desventajas, ect. y Las reviws correspondientes del mismo, como hacer un uso eficiente del mismo atraves del conocimiento de sus sintaxis, esto se realizo con el siguiente motivo , para poder dar el enfoque teórico.&lt;br /&gt;Pero desde hace unos días se comenzó con la aplicación de sqlite, en los diferente lenguajes. Ahora es el turno de Java.&lt;br /&gt;Java hace uso de las librerías JDBC para poder realizar la comunicación con la DB. desde hace tiempo están disponibles SqliteJDBC.&lt;br /&gt;En el site SQLiteJDBC (http://www.zentus.com/sqlitejdbc/) podemos encontrar wrappers de SQLite para Java en las plataformas Linux, Max OS, y windows .&lt;br /&gt;Imaginemos la siguiente aplicación "Digamos que se desea crear una lista de todo nuestro amigos y sus fechas de cumpleaños con su correo y sus teléfonos"&lt;br /&gt;Muy Sencillo el problema pero imaginemos como seria la estructura de la base de datos&lt;br /&gt;Para llevar a cabo este ejemplo -Un par de Entregas- necesitaremos realizar una simple conexión, con java, esto se realiza por medio de una clase la cual lameremos "Coneccion" y su Estructura es esta&lt;br /&gt;&lt;div&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;package pruebaBD;&lt;br /&gt;import org.sqlite.*;&lt;br /&gt;import java.sql.Connection;&lt;br /&gt;import java.sql.Statement;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;public class Coneccion {&lt;br /&gt;private Connection varConeccion;&lt;br /&gt;private Statement varSentencia;&lt;br /&gt;public Coneccion(String nombreDB) throws ClassNotFoundException, SQLException{&lt;br /&gt;Class.forName("org.sqlite.JDBC");&lt;br /&gt;this.varConeccion = DriverManager.getConnection("jdbc:sqlite:" + nombreDB);&lt;br /&gt;this.varSentencia = this.varConeccion.createStatement();&lt;br /&gt;}&lt;br /&gt;}&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;En Detalle&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;Class.forName("org.sqlite.JDBC");&lt;/code&gt;&lt;/span&gt; : Se indica el nombre de conector que se utilizará.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;this.varConeccion = DriverManager.getConnection("jdbc:sqlite:" + nombreDB);&lt;/code&gt;&lt;/span&gt; : Aquí se indica el driver con que trabajaremos: sqlite y el nombre de la Base de Datos "nombreDB" -En el Ejemplo Lo trafiero por parametro -&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;this.varSentencia = this.varConeccion.createStatement();&lt;/code&gt;&lt;/span&gt; : Abre un canal para realizar las sentencias.&lt;br /&gt;hasta aqui solo hemos creado la clase que realiza la conexión. con Sqlite, en los próximas entregas de realizaremos el resto de las clases.&lt;br /&gt;&lt;strong&gt;Link&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.pysquared.com/files/Java/JavaSQLiteExample/"&gt;http://www.pysquared.com/files/Java/JavaSQLiteExample/&lt;/a&gt; &lt;a href="http://www.zentus.com/sqlitejdbc/"&gt;http://www.zentus.com/sqlitejdbc/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1270235752691018627?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1270235752691018627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1270235752691018627'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/java-y-sqlite-parte-1.html' title='Java y SQLite - Parte I'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/32/53624909_dc08e1ad68_t.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8955277766561762436</id><published>2007-12-04T06:51:00.000-08:00</published><updated>2007-12-04T15:44:18.390-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Java'/><title type='text'>Configurando Eclipse y SQLite</title><content type='html'>&lt;a href="http://farm1.static.flickr.com/39/119774797_8d27ae6a58_o.jpg"&gt;&lt;img style="margin: 0px 0px 10px 10px; float: right; width: 166px; height: 173px;" alt="" src="http://farm1.static.flickr.com/39/119774797_8d27ae6a58_o.jpg" border="0" height="163" /&gt;&lt;/a&gt; &lt;div&gt;Hace algunos dias, recibí un mail donde me preguntaban&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;em&gt;"Como configuro eclipse , para trabajar con Sqlite y Java"&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Muchos nos hemos complicado alguna ves con la inclusión de los .jar , es muy simple, siguiendo estos pasos se debe de descargar el archivo jdbc desde el sito de SqliteJDBC - (http://www.zentus.com/sqlitejdbc/) -&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_uJwbWnvfNFg/R1VrFvYwquI/AAAAAAAAAAY/kIHH8An5Ong/s1600-h/SqliteElcipse.png"&gt;&lt;/a&gt;Una ves obtenido lo descomprimimos , y copiamos el .jar en el nuestro workspace el .jar y luego realizamos clic sobre el .jar y botón derecho y nos vamos a la opción donde dice add build -&gt; Seleccionamos la opcion Add build path. &lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_uJwbWnvfNFg/R1VsZ_YwqvI/AAAAAAAAAAg/tiRjtrqWZN4/s1600-h/SqliteElcipse.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5140133743481105138" style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://3.bp.blogspot.com/_uJwbWnvfNFg/R1VsZ_YwqvI/AAAAAAAAAAg/tiRjtrqWZN4/s200/SqliteElcipse.png" border="0" height="146" width="192" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;Si queremos podemos realizarlo de otra manera también seria correcta ir a menú Proyect -&gt; Propiedades -&gt; y luego a la pestaña donde dice -&gt; Add external Jar y de allí seleccionamos el lugar donde se encuentra el .jar , aceptamos y lo tendremos instalado listo par usar.&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Nota:&lt;/strong&gt;&lt;br /&gt;Se deben de copiar también los archivos .so para Linux y .dll para Window$&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8955277766561762436?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8955277766561762436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8955277766561762436'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/configurando-eclipse-sqlite.html' title='Configurando Eclipse y SQLite'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uJwbWnvfNFg/R1VsZ_YwqvI/AAAAAAAAAAg/tiRjtrqWZN4/s72-c/SqliteElcipse.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8561010699619147932</id><published>2007-12-01T20:22:00.000-08:00</published><updated>2007-12-25T11:05:42.740-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite y Python'/><category scheme='http://www.blogger.com/atom/ns#' term='Practica y Ejemplos'/><title type='text'>Python - SQLite</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.greglasley.net/Images/African-Rock-Python-0004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 160px; height: 241px;" src="http://www.greglasley.net/Images/African-Rock-Python-0004.jpg" alt="" border="0" /&gt;&lt;/a&gt;Bueno, ahora llego el momento de comenzar a ver la parte práctica de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;, dijimos en todo este tiempo que las Bases de Datos es compatible con muchos Lenguajes de Programación, en esta oportunidad vamos a ver la integración de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; con &lt;a href="http://elcodigok.blogspot.com/search/label/Python"&gt;&lt;span style="font-weight: bold;"&gt;Python&lt;/span&gt;&lt;/a&gt;, para aquellos que no están al tanto, &lt;span style="font-weight: bold;"&gt;Python&lt;/span&gt; es un Lenguaje de Programación interpretado creado por Guido van Rossum, en los sistemas GNU/Linux es muy popular, tienen como principal característica que es totalmente orientado a objetos, fácil de aprender y muy potente.&lt;br /&gt;&lt;br /&gt;Bueno para poder llevar a cabo la integración necesitamos que en Python tengamos instalado unas librerías que nos va a servir como interface para conectar las Bases de Datos SQLite. Para ello hacemos lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;$ &lt;span style="font-weight: bold;"&gt;sudo apt-get install python-pysqlite2&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Con esto ya contamos con estas librerías y podemos realizar la conexión fácilmente.&lt;br /&gt;Para continuar y realizar nuestro primer ejemplo sencillo de esta integración, les recomendamos que vean las &lt;a href="http://sqlite-latino.blogspot.com/2007/11/review-de-sqlite-parte-i.html"&gt;&lt;span style="font-weight: bold;"&gt;Review I&lt;/span&gt;&lt;/a&gt; y &lt;a href="http://sqlite-latino.blogspot.com/2007/11/review-de-sqlite-parte-ii.html"&gt;&lt;span style="font-weight: bold;"&gt;Review II&lt;/span&gt;&lt;/a&gt; de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; y creen una Base de Datos con aunquesea una tabla, a modo de ejemplo.&lt;br /&gt;&lt;br /&gt;Vamos a suponer dos cosas: Que la Base de datos o el archivo lo llamamos "&lt;span style="font-style: italic;"&gt;prueba.db&lt;/span&gt;" y que como les decia a modo de prueba creamos una tabla llamada "&lt;span style="font-style: italic;"&gt;personal&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Ahora bien creamos un archivo en python con nuestro editor preferido y lo llamamos "&lt;span style="font-style: italic;"&gt;prueba01.py&lt;/span&gt;"&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;# Importa librerias de SQLite&lt;br /&gt;from pysqlite2 import dbapi2 as sqlite&lt;br /&gt;&lt;br /&gt;# Realiza la coneccion con la db colocando el Path&lt;br /&gt;# donde se encuentra el archivo de la Base de datos&lt;br /&gt;coneccion = sqlite.connect('prueba.db')&lt;br /&gt;&lt;br /&gt;# Crea un objeto cursor para trabajar&lt;br /&gt;cursor = coneccion.cursor()&lt;br /&gt;&lt;br /&gt;# Ejecuta la consulta SELECT, tal y como lo haríamos en SQL&lt;br /&gt;cursor.execute('SELECT apellido, nombre FROM personal order by id')&lt;br /&gt;&lt;br /&gt;# Muestra todos los datos de la consulta&lt;br /&gt;for (apellido, nombre) in cursor:&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;print 'Apeliido y Nombre: %s, %s.' % (apellido, nombre)&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;Ahora bien una ves almacenado el archivo "&lt;span style="font-style: italic;"&gt;prueba01.py&lt;/span&gt;" vamos a preceder a ejecutarlo convocando al interprete de la siguiente manera:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;$ python2.4 prueba01.py&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Bueno, más adelante vamos a continuar con mas ejemplos de aplicación, por el momento con este magnifico Lenguaje de Programación llamado Python.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8561010699619147932?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8561010699619147932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8561010699619147932'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/python-sqlite.html' title='Python - SQLite'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-4177071568713917499</id><published>2007-12-01T06:30:00.000-08:00</published><updated>2007-12-01T06:38:19.149-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos apropiados'/><title type='text'>Base de datos de Pedagogía o Enseñanza</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.aldeaeducativa.com/IMAGES/student6.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.aldeaeducativa.com/IMAGES/student6.jpg" alt="" border="0" /&gt;&lt;/a&gt;Porque es fácil de configurar y usar (la instalación es trivial: tan sólo la copia, &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; o sqlite.exe ejecutable a la máquina de destino y ejecutarlo) &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; hace un buen Motor de Base de Datos para su utilización en la enseñanza de SQL.&lt;br /&gt;&lt;br /&gt;Los estudiantes o aquellas personas que están aprendiendo pueden fácilmente crear tantas Bases de Datos como a ellos les gusta y puede enviarse entre ellos un correo electrónico a las Bases de Datos de instructores para la presentación de observaciones o de clasificación y de eso modo compartirlas de manera muy fácil.&lt;br /&gt;&lt;br /&gt;Para los estudiantes más avanzados que están interesados en el estudio de cómo un &lt;span style="font-weight: bold;"&gt;RDBMS&lt;/span&gt; se ejecuta, el modular y bien comentado y documentado &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; código puede servir como una buena base. Esto no quiere decir que &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; es un modelo exacto de la forma en que otros motores de bases de datos se apliquen, sino más bien a un estudiante que entiende cómo funciona &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; pueden comprender más rápidamente los principios operativos de otros sistemas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-4177071568713917499?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4177071568713917499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4177071568713917499'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/base-de-datos-de-pedagoga-o-enseanza.html' title='Base de datos de Pedagogía o Enseñanza'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-3492790213494668128</id><published>2007-12-01T06:23:00.001-08:00</published><updated>2007-12-01T06:28:52.062-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos apropiados'/><title type='text'>Base de Datos durante las pruebas o demostraciones en empresas</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.itcomitan.edu.mx/informacion/residenciaprof/empresas.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.itcomitan.edu.mx/informacion/residenciaprof/empresas.jpg" alt="" border="0" /&gt;&lt;/a&gt;Si está escribiendo una aplicación cliente para el motor de Base de Datos de una empresa, tiene sentido utilizar un genérico de Base de Datos que le permite conectarse a muchos tipos distintos de los Motores de Base de Datos &lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Es aún mejor de seguir adelante implementándolo y &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; incluir en la mezcla de base de datos y el apoyo a linkar o enlazar en el motor &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; con el cliente. De esa forma, el programa cliente puede ser usado con un archivo de datos &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; para probar o para manifestaciones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-3492790213494668128?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3492790213494668128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3492790213494668128'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/12/base-de-datos-durante-las-pruebas-o.html' title='Base de Datos durante las pruebas o demostraciones en empresas'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-6060283045999658613</id><published>2007-11-29T21:44:00.000-08:00</published><updated>2007-11-29T21:47:00.970-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos apropiados'/><title type='text'>Bases de Datos Internas o Temporales</title><content type='html'>Para los programas que tienen un gran volumen de datos que debe ser ordenado de diversas maneras, a menudo es más fácil y más rápida de cargar los datos en una memoria en la base de datos &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; y el uso y se une a las preguntas con cláusulas &lt;span style="font-size:130%;"&gt;&lt;code&gt;ORDER BY&lt;/code&gt;&lt;/span&gt; para extraer los datos de la Forma y el orden en lugar de tratar de código de las mismas operaciones manualmente.&lt;br /&gt;&lt;br /&gt;El uso de una base de datos SQL internos de esta manera el programa también ofrece una mayor flexibilidad ya que las nuevas columnas (atributos) y los índices pueden ser añadidos sin tener que reprogramar cada consulta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-6060283045999658613?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6060283045999658613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6060283045999658613'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/bases-de-datos-internas-o-temporales.html' title='Bases de Datos Internas o Temporales'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1275189235256856608</id><published>2007-11-28T07:25:00.000-08:00</published><updated>2007-11-28T07:28:54.294-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos apropiados'/><title type='text'>Sitios Web</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dattatec.com/sp/imagenes/fs-capturas-templates-sitios-web.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 180px; height: 206px;" src="http://www.dattatec.com/sp/imagenes/fs-capturas-templates-sitios-web.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; normalmente trabajará como el gran motor de base de datos de baja y media del tráfico en Internet (es decir, el 99,9% de todos los sitios Web). La cantidad de tráfico web que &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; puede manejar depende, por supuesto, sobre la forma en el sitio web utiliza en gran medida su base de datos. En general, cualquier sitio que recibe menos de 100.000 visitas / día debe funcionar bien con &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;.  El 100.000 visitas / día cifra es una estimación conservadora, y no de un duro límite superior. SQLite se ha demostrado que trabajar con 10 veces la cantidad de tráfico.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1275189235256856608?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1275189235256856608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1275189235256856608'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/sitios-web.html' title='Sitios Web'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1168917332719916100</id><published>2007-11-26T09:22:00.000-08:00</published><updated>2007-11-26T09:29:13.594-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos apropiados'/><title type='text'>Aplicaciones y Dispositivos Embebidos</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.inforsecuritel.com/images/11108-CARCASA_EXTERIOR.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.inforsecuritel.com/images/11108-CARCASA_EXTERIOR.jpg" alt="" border="0" /&gt;&lt;/a&gt;Porque una base de datos &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; requiere poco o prácticamente nada de la administración, &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; es una excelente opción para los dispositivos o servicios que deben trabajar sin vigilancia o sin apoyo humano. &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; es una buena elección para su uso en teléfonos móviles, PDAs, set-top boxes, y / o electrodomésticos. También funciona bien como una Base de Datos incorporados en descargar aplicaciones de consumo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1168917332719916100?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1168917332719916100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1168917332719916100'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/aplicaciones-y-dispositivos-embebidos.html' title='Aplicaciones y Dispositivos Embebidos'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-4430667904797376819</id><published>2007-11-25T20:07:00.000-08:00</published><updated>2007-11-25T20:25:03.563-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos apropiados'/><title type='text'>Aplicación en Formato de Archivo</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://alegnalinux.lynksee.com/album/main.php?g2_view=core.DownloadItem&amp;amp;g2_itemId=44&amp;amp;g2_serialNumber=2"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 248px; height: 185px;" src="http://alegnalinux.lynksee.com/album/main.php?g2_view=core.DownloadItem&amp;amp;g2_itemId=44&amp;amp;g2_serialNumber=2" alt="" border="0" /&gt;&lt;/a&gt;Nuevamente mostrando casos de éxitos de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; en las cuales cómodamente podría ser reemplazo de los grande Motores de Bases de Datos, tenemos las aplicaciones en formato de archivo.&lt;br /&gt;&lt;br /&gt;Este es el caso de las aplicaciones de escritorio que normalmente lo utilizamos para desempeñar una tarea específica, como herramienta de Análisis Financiero, los paquetes de CAD, programas de mantenimientos de registros, etc.&lt;br /&gt;&lt;br /&gt;Las tradicionales operación como Archivo/Abrir se realizaría con &lt;span style="font-size:130%;"&gt;&lt;code&gt;sqlite3_open()&lt;/code&gt;&lt;/span&gt;, posteriormente se ejecuta un &lt;span style="font-size:130%;"&gt;&lt;code&gt;BEGIN TRANSACTION&lt;/code&gt;&lt;/span&gt; para obtener un acceso exclusivo al contenido. en la operación Archivo/Guardar se hace con un &lt;span style="font-size:130%;"&gt;&lt;code&gt;COMMIT&lt;/code&gt;&lt;/span&gt; seguido por otro &lt;span style="font-size:130%;"&gt;&lt;code&gt;BEGIN TRANSACTIO&lt;/code&gt;&lt;/span&gt;. Es importante considerar el uso de las transacciones ya que garantiza que las actualizaciones de las aplicaciones sean atómicas, aisladas y por sobre todas las cosas coherentes.&lt;br /&gt;&lt;br /&gt;Seguramente más adelante vamos a mostrar mas características de casos exitosos y de las cuales vas a poder sacar tus conclusiones a la hora de pensar en migrar esas aplicaciones con otros motores de base de datos a &lt;span style="font-weight: bold;"&gt;SQLite.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-4430667904797376819?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4430667904797376819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4430667904797376819'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/aplicacin-en-formato-de-archivo.html' title='Aplicación en Formato de Archivo'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1619976100678067515</id><published>2007-11-24T05:58:00.000-08:00</published><updated>2007-11-24T06:32:38.092-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usos apropiados'/><title type='text'>Los usos apropiados de SQLite</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.rubyonrailsblog.com/images/sqlite.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 185px; height: 124px;" src="http://www.rubyonrailsblog.com/images/sqlite.jpg" alt="" border="0" /&gt;&lt;/a&gt;Quizás este tema lo hablamos pero muy por arriba y ahora llego la oportunidad para explicar mejor las prestaciones de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; para los usuarios.&lt;br /&gt;&lt;br /&gt;Como ya sabemos &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; es diferente a la mayoría de los otros motores de Base de Datos SQL en donde ya conocemos estos objetivos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Simple de Administrar.&lt;/li&gt;&lt;li&gt;Simple para Operar.&lt;/li&gt;&lt;li&gt;Simple para fusionarlo con aplicaciones más amplias.&lt;/li&gt;&lt;li&gt;Fácil de mantener y personalizar.&lt;/li&gt;&lt;/ul&gt;Las personas que utilicen &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; encontrarán en él un Pseudo Motor pequeño y rápido, y también van a encontrar que SQLite es muy confiable. La fiabilidad es una consecuencia de la simplicidad. Si bien posee estas características SQLite desde sus inicios se esfuerza por ser por sobre todas las cosas &lt;span style="font-weight: bold;"&gt;S I M P L E&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;La simplicidad de este Pseudo Motor puede ser como ya sabemos una Fortaleza o una debilidad, en función de que es lo que el usuario desea hacer con el mismo. Con el afán de lograr la máxima simplicidad tubo que sacrificar otros aspectos que algunos usuarios los notan útiles, como la alta concurrencia, un rico y amplio conjunto de funciones incorporadas, procedimientos almacenados, etc. Si necesitas algunas de estas características y no cuenta con la complejidad añadida que traen, entonces &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; &lt;span style="font-style: italic;"&gt;NO&lt;/span&gt; es probablemente el Motor de Base de Datos. La intención de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; no es la de ser una empresa de Motores de Bases de Datos y competir con Oracle o PostgreSQL.&lt;br /&gt;&lt;br /&gt;La regla de oro para saber cuando es apropiado utilizar &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; es la siguiente:&lt;br /&gt;&lt;blockquote&gt;El uso de SQLite en situaciones en la que la sencillez de la administración, implementación y mantenimientos son más importantes que las innumerables características complejas que las empresa proporcionará a los Motores de Bases de Datos.&lt;/blockquote&gt;&lt;br /&gt;En la práctica, las situaciones en que la simplicidad es la mejor opción, son más comunes de las que muchos creen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1619976100678067515?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1619976100678067515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1619976100678067515'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/los-usos-apropiados-de-sqlite.html' title='Los usos apropiados de SQLite'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7080376473650054060</id><published>2007-11-22T09:10:00.000-08:00</published><updated>2007-11-22T11:56:50.019-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Practica y Ejemplos'/><title type='text'>Review de SQLite - Parte II</title><content type='html'>&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/f/f2/SQLiteLogo3.png"&gt;&lt;/a&gt;&lt;a href="http://es.lostpedia.com/es_images/thumb/f/f3/Abc-logo2007.png/45px-Abc-logo2007.png"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 50px; CURSOR: hand; HEIGHT: 51px" height="84" alt="" src="http://es.lostpedia.com/es_images/thumb/f/f3/Abc-logo2007.png/45px-Abc-logo2007.png" border="0" /&gt;&lt;/a&gt;Aprendamos algunos comandos especiales para movernos sobre &lt;span style="FONT-WEIGHT: bold"&gt;SQLite&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La mayoría de las veces &lt;span style="FONT-WEIGHT: bold"&gt;SQLite&lt;/span&gt; lee las lineas de entrada y los transforma al de la libreria &lt;span style="FONT-WEIGHT: bold"&gt;SQLite&lt;/span&gt; para luego ejecutarlas. Si una línea de entrada empieza con un Punto (".") es interpretado inmediatamente por el intérprete de SQLite, estos puntos se utiliza normalmente para cambiar el formato de salidas de las consulta, la cual veremos más adelante&lt;br /&gt;&lt;br /&gt;Para obtener una lista de los comandos disponibles, podemos tipear en cualquier momento ".help" y nos arrojaría la siguiente lista:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;sqlite&gt; &lt;span style="FONT-WEIGHT: bold"&gt;.help&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;.bail ONOFF Stop after hitting an error. Default OFF&lt;br /&gt;.databases List names and files of attached databases&lt;br /&gt;.dump ?TABLE? ... Dump the database in an SQL text format&lt;br /&gt;.echo ONOFF Turn command echo on or off&lt;br /&gt;.exit Exit this program&lt;br /&gt;.explain ONOFF Turn output mode suitable for EXPLAIN on or off.&lt;br /&gt;.header(s) ONOFF Turn display of headers on or off&lt;br /&gt;.help Show this message&lt;br /&gt;.import FILE TABLE Import data from FILE into TABLE&lt;br /&gt;.indices TABLE Show names of all indices on TABLE&lt;br /&gt;.load FILE ?ENTRY? Load an extension library&lt;br /&gt;.mode MODE ?TABLE? Set output mode where MODE is one of:&lt;br /&gt;csv Comma-separated values&lt;br /&gt;column Left-aligned columns. (See .width)&lt;br /&gt;html HTML code&lt;br /&gt;insert SQL insert statements for TABLE&lt;br /&gt;line One value per line&lt;br /&gt;list Values delimited by .separator string&lt;br /&gt;tabs Tab-separated values&lt;br /&gt;tcl TCL list elements&lt;br /&gt;.nullvalue STRING Print STRING in place of NULL values&lt;br /&gt;.output FILENAME Send output to FILENAME&lt;br /&gt;.output stdout Send output to the screen&lt;br /&gt;.prompt MAIN CONTINUE Replace the standard prompts&lt;br /&gt;.quit Exit this program&lt;br /&gt;.read FILENAME Execute SQL in FILENAME&lt;br /&gt;.schema ?TABLE? Show the CREATE statements&lt;br /&gt;.separator STRING Change separator used by output mode and .import&lt;br /&gt;.show Show the current values for various settings&lt;br /&gt;.tables ?PATTERN? List names of tables matching a LIKE pattern&lt;br /&gt;.timeout MS Try opening locked tables for MS milliseconds&lt;br /&gt;.width NUM NUM ... Set column widths for "column" mode&lt;br /&gt;sqlite&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Realicemos una introducción para poder manipulas las salidas o configurarla, además cabe destacar que SQLite3 es capaz de mostrar los resultados de una consulta en ocho diferentes formatos: "csv", "column", "html", "insert", "line", "tabs", and "tcl". Podes usar en .mode para lograr estas diferentes salidas.&lt;br /&gt;&lt;br /&gt;Bueno, comencemos con la modalidad por defecto en la cual SQLite nos muestra los datos tras una consulta realizada previamente, esta consulta estandart es separada por este símbolo (""), este ejemplo que vamos a realizar tomamos como base la Review I.&lt;br /&gt;&lt;br /&gt;Para acceder a la base de datos creada anteriormente&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code&gt;$ &lt;span style="FONT-WEIGHT: bold"&gt;sqlite3 prueba.db&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una ves dentro de la misma podemos realizar:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;sqlite&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold;font-size:130%;" &gt; .mode list&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;sqlite&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold;font-size:130%;" &gt; select * from personal;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;1DanyxMaldoandoYYYXXXZZZ&lt;br /&gt;2LaRepaWebZZZXXXYYY&lt;br /&gt;sqlite&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ahora bien si utilizas ".separator" va a cambiar el modo de separación de la consulta, por ejemplo lo vamos a hacer cambiar por una coma y un espacio ", "&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;sqlite&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold;font-size:130%;" &gt; .separator ", "&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;sqlite&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold;font-size:130%;" &gt; select * from personal;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;1, Danyx, Maldoando, YYYXXXZZZ&lt;br /&gt;2, LaRepa, Web, ZZZXXXYYY&lt;br /&gt;sqlite&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Bueno por el momento lo vamos a dejar ahy, de este modo vamos captando la estructura de &lt;span style="FONT-WEIGHT: bold"&gt;SQLite3&lt;/span&gt;, como decimos un PseudoMotor muy potente y liviano. Será hasta la próxima y muchas gracias por acompañarnos.&lt;br /&gt;Autor: Maldonado Daniel Martin (&lt;a href="http://www.larepaweb.com.ar/index.php?id=post&amp;amp;n=289"&gt;&lt;span style="FONT-STYLE: italic"&gt;LaRepaWeb&lt;/span&gt;&lt;/a&gt;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7080376473650054060?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7080376473650054060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7080376473650054060'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/review-de-sqlite-parte-ii.html' title='Review de SQLite - Parte II'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1719446728124016393</id><published>2007-11-18T20:44:00.000-08:00</published><updated>2007-11-18T21:06:43.700-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Características'/><title type='text'>SQLite - Extensiones del Lenguaje SQL</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QbjL4lTr2UU/R0EZz--FBUI/AAAAAAAAAKM/gdXE7ArmVnQ/s1600-h/extendido.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_QbjL4lTr2UU/R0EZz--FBUI/AAAAAAAAAKM/gdXE7ArmVnQ/s320/extendido.png" alt="" id="BLOGGER_PHOTO_ID_5134413431046473026" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; proporciona una serie de mejoras en el lenguaje &lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt;, que no se encuentran normalmente en otros &lt;span style="font-style: italic;"&gt;Motores de Bases de Datos&lt;/span&gt;, sean comerciales o no. &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; provee declaraciones como &lt;span style="font-size:130%;"&gt;&lt;code&gt;REPLACE&lt;/code&gt;&lt;/span&gt; y &lt;span style="font-size:130%;"&gt;&lt;code&gt;ON CONFLICT&lt;/code&gt;&lt;/span&gt;, clausulas que permiten añadir para el control de la limitación de resolución de conflicto.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; soporta &lt;span style="font-size:130%;"&gt;&lt;code&gt;ATTACH&lt;/code&gt;&lt;/span&gt; y &lt;span style="font-size:130%;"&gt;&lt;code&gt;DETACH&lt;/code&gt;&lt;/span&gt;, que son comando que permiten a múltiple Bases de Datos independientes sean utilizadas en una misma consulta. Por último &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; define las API que permite al usuario añadir nuevas funciones SQL y el cotejo de las secuencia&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1719446728124016393?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1719446728124016393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1719446728124016393'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/sqlite-extensiones-del-lenguaje-sql.html' title='SQLite - Extensiones del Lenguaje SQL'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QbjL4lTr2UU/R0EZz--FBUI/AAAAAAAAAKM/gdXE7ArmVnQ/s72-c/extendido.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-96375898735865645</id><published>2007-11-15T20:42:00.000-08:00</published><updated>2007-11-15T20:58:49.837-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Características'/><title type='text'>SQLite - De dominio PÚBLICO</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.techtear.com/wp-content/uploads/2007/04/opensource-375.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.techtear.com/wp-content/uploads/2007/04/opensource-375.jpg" alt="" border="0" /&gt;&lt;/a&gt;Sencillamente el código fuente de  &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; es de dominio público.Ninguna reivindicación se hace de los derechos de autor se hace en cualquier parte del núcleo del código fuente. Todos los contribuyentes que participaron de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;, han firmado una declaración jurada específicamente que desmiente cualquier interés de derecho de autor en el código. Esto significa que nadie es capaz de hacer lo que quiera con el código fuente de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Existe otros motores de Bases de Datos basados en SQL liberados de licencias que permiten al código ser ampliamente utilizados y libremente. Pero estos motores se siguen rigiendo por la ley de derechos de autor. &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; es diferente ya que en el derecho de autor la ley simplemente no se aplica.&lt;br /&gt;&lt;br /&gt;Los archivos de código fuente para los otros motores de Bases de Datos SQL, generalmente comienzan con un comentario que describe su licencia de derechos para leer y copiar el archivo en cuestión. En &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; el código fuente no contiene ninguna licencia ya que como decíamos no se rige por el derecho de autor.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;En lugar de una licencia el código fuente de SQLite ofrece una bendición:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hacer el bien y NO el mal.&lt;/li&gt;&lt;li&gt;Se puede encontrar el perdón para ti y perdonar a los demás.&lt;/li&gt;&lt;li&gt;Se puede compartir libremente, no teniendo más de lo que dan.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-96375898735865645?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/96375898735865645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/96375898735865645'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/sqlite-de-dominio-pblico.html' title='SQLite - De dominio PÚBLICO'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-4591441980467475681</id><published>2007-11-14T16:50:00.000-08:00</published><updated>2007-11-14T18:16:03.541-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Practica y Ejemplos'/><title type='text'>Review de SQLite - Parte I</title><content type='html'>&lt;a href="http://www.puntojet.com.ar/abc%202.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 205px; CURSOR: hand; HEIGHT: 167px" height="167" alt="" src="http://www.puntojet.com.ar/abc%202.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Vamos a comenzar a hacer un HOWTO acerca de &lt;strong&gt;SQLite&lt;/strong&gt;, gracias a un amigo &lt;strong&gt;&lt;a href="http://cabero.blogspot.com/" target="_blank"&gt;Gerardo Cabero&lt;/a&gt;&lt;/strong&gt; y las influencias de mucha gente involucrada en todo este tema.&lt;br /&gt;&lt;br /&gt;Entendamos algunos conceptos antes de comenzar:&lt;br /&gt;&lt;strong&gt;SQLite&lt;/strong&gt; es un sistema de gestión de bases de datos relacional compatible con ACID, y que está contenida en una relativamente pequeña librería en C. SQLite es un proyecto de dominio público creado por D. Richard Hipp.&lt;br /&gt;&lt;br /&gt;Rapidamente instalemos nuestro PseudoMotor SQLite en su version 3 (apodado de esa forma por Gerardo), en un sistema GNU/Linyx utilizando alguna Kosole o Terminal&lt;br /&gt;&lt;br /&gt;$ &lt;strong&gt;sudo apt-get install sqlite3&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;una ves instalado hagamos algunas pruebas, nos dirijamos hacia algún directorio y ahora a crear una Base de Datos&lt;br /&gt;&lt;br /&gt;$ &lt;strong&gt;sqlite3 prueba.db&lt;/strong&gt;&lt;br /&gt;SQLite version 3.3.10&lt;br /&gt;Enter ".help" for instructions&lt;br /&gt;sqlite&gt; &lt;strong&gt;CREATE TABLE personal (&lt;/strong&gt;&lt;br /&gt;...&gt; &lt;strong&gt;id smallint primary key,&lt;/strong&gt;&lt;br /&gt;...&gt; &lt;strong&gt;nombre varchar(25),&lt;/strong&gt;&lt;br /&gt;...&gt; &lt;strong&gt;apellido varchar(25),&lt;/strong&gt;&lt;br /&gt;...&gt; &lt;strong&gt;direccion varchar(25)&lt;/strong&gt;&lt;br /&gt;...&gt; &lt;strong&gt;);&lt;/strong&gt;&lt;br /&gt;sqlite&gt;&lt;br /&gt;&lt;br /&gt;Ahora insertemos algunos datos de la siguiente manera:&lt;br /&gt;&lt;br /&gt;sqlite&gt; &lt;strong&gt;insert into personal values(1, 'Danyx', 'Maldonado', 'YYYXXXZZZ');&lt;/strong&gt;&lt;br /&gt;sqlite&gt; &lt;strong&gt;insert into personal values(2, 'LaRepa', 'Web', 'ZZZXXXYYY');&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Hagamos nuestra primera consulta sobre la tabla "personal"&lt;br /&gt;&lt;br /&gt;sqlite&gt; &lt;strong&gt;select * from personal;&lt;/strong&gt;&lt;br /&gt;1DanyxMaldoandoYYYXXXZZZ&lt;br /&gt;2LaRepaWebZZZXXXYYY&lt;br /&gt;sqlite&gt;&lt;br /&gt;&lt;br /&gt;para poder salir de la edición por consola&lt;br /&gt;&lt;br /&gt;sqlite&gt; &lt;strong&gt;.quit&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Más adelante voy a estar mostrando algunas opciones que nos brinda SQLite y el manejo de este PseudoMotor formatear salidas, exportar, etc.&lt;/p&gt;Este fragmento lo Obtubimos desde del Sitio: &lt;a href="http://www.larepaweb.com.ar/"&gt;LaRepaWeb - Gracias Daniel Maldonado y Luis - &lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-4591441980467475681?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4591441980467475681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4591441980467475681'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/review-de-sqlite-parte-i.html' title='Review de SQLite - Parte I'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7016958696697874001</id><published>2007-11-13T18:14:00.000-08:00</published><updated>2007-11-14T17:24:59.618-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Características'/><title type='text'>SQLite - Sentencias SQL Compiladas en la Máquina Virtual</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.tattoochile.cl/Imagen/Maquina%204.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.tattoochile.cl/Imagen/Maquina%204.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Cada Motor de Base de datos &lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt; compila cada sentencia &lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt; en algún tipo de estructura de datos interna que luego se utilizará para llevar a cabo la labor de la declaración. Pero en la mayoría de los Motores SQL interno que la estructura de los datos es una compleja red de estructuras y objetos relacionados entre sí. En &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;, compilar la forma de las declaraciones es de un breve programa en un lenguaje de máquina como representación. Los usuarios de la base de datos puede ver esta &lt;span style="font-style: italic;"&gt;Máquina Virtual&lt;/span&gt; de lenguaje por &lt;code&gt;EXPLAIN&lt;/code&gt; ante poniéndole esta palabra clave para una consulta. Más adelante veremos estos ejemplos.&lt;br /&gt;&lt;br /&gt;El uso de una &lt;span style="font-style: italic;"&gt;Máquina Virtual&lt;/span&gt; en &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; ha sido un gran beneficio para el desarrollo de la biblioteca. La &lt;span style="font-style: italic;"&gt;Máquina Virtual&lt;/span&gt; proporciona una crujiente, bien definido el cruce entre la interfaz de usuario de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; (en la parte que analiza las sentencias SQL y genera el código máquina virtual) y la parte de atrás de final (la parte que ejecuta la máquina virtual de código y calcula un resultado. ) La máquina virtual permite a los desarrolladores para ver claramente y en una forma de fácil lectura &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; es lo que intentamos hacer con cada declaración compila, que es una gran ayuda en la depuración.&lt;br /&gt;&lt;br /&gt;Dependiendo de la forma en que se compila, &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; también tiene la capacidad de rastreo de la ejecución de la máquina virtual de impresión de cada máquina virtual de instrucción y su resultado, ya que se ejecuta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7016958696697874001?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7016958696697874001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7016958696697874001'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/sqlite-sentencias-sql-compiladas-en-la.html' title='SQLite - Sentencias SQL Compiladas en la Máquina Virtual'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-2899518087473588941</id><published>2007-11-09T19:10:00.000-08:00</published><updated>2007-11-09T19:17:10.075-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Características'/><title type='text'>SQLite - De código Legible</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.barcodeart.com/science/upca.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 139px; height: 81px;" src="http://www.barcodeart.com/science/upca.gif" alt="" border="0" /&gt;&lt;/a&gt;El código fuente de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; estás diseñado y codificado para ser legible y accesible hasta para un programador medio. Todos sus procedimientos, estructuras de datos y variables están cuidadosamente comentadas con información útil e integral para que de esa forma se pueda comprender su estructura y el significado de cada una de las partes de la aplicación.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-2899518087473588941?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2899518087473588941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/2899518087473588941'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/sqlite-de-cdigo-legible.html' title='SQLite - De código Legible'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-7053557479903414394</id><published>2007-11-08T18:06:00.000-08:00</published><updated>2007-11-08T18:50:01.134-08:00</updated><title type='text'>Elegí tu Banner y ayudanos a difundir la Comunidad SQLite-Latino</title><content type='html'>&lt;center&gt;&lt;a href="http://sqlite-latino.blogspot.com/"&gt;&lt;br /&gt;&lt;img src="http://img467.imageshack.us/img467/9708/banner110x32gd7.png" alt="SQLite-Latino" border="0" height="32" width="110" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;textarea name="contenido" cols="30" rows="6"&gt;&lt;a href="http://sqlite-latino.blogspot.com/"&gt;&lt;br /&gt;&lt;img src="http://img467.imageshack.us/img467/9708/banner110x32gd7.png" alt="SQLite-Latino" width="110" height="32" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqlite-latino.blogspot.com/"&gt;&lt;br /&gt;&lt;img src="http://img187.imageshack.us/img187/3083/banner366x88pq1.png" alt="SQLite-Latino" border="0" height="88" width="366" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;textarea name="contenido" cols="30" rows="6"&gt;&lt;a href="http://sqlite-latino.blogspot.com/"&gt;&lt;br /&gt;&lt;img src="http://img187.imageshack.us/img187/3083/banner366x88pq1.png" alt="SQLite-Latino" width="366" height="88" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="center"&gt;&lt;a href="http://sqlite-latino.blogspot.com/"&gt;&lt;br /&gt;&lt;img src="http://img466.imageshack.us/img466/305/banner100x308rd5.png" alt="SQLite-Latino" border="0" height="308" width="100" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;textarea name="contenido" cols="30" rows="6"&gt;&lt;a href="http://sqlite-latino.blogspot.com/"&gt;&lt;br /&gt;&lt;img src="http://img466.imageshack.us/img466/305/banner100x308rd5.png" alt="SQLite-Latino" width="100" height="308" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/textarea&gt;&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-7053557479903414394?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7053557479903414394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/7053557479903414394'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/eleg-tu-banner-y-ayudanos-difundir-la.html' title='Elegí tu Banner y ayudanos a difundir la Comunidad SQLite-Latino'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8778232107770449301</id><published>2007-11-07T20:09:00.000-08:00</published><updated>2007-11-07T20:25:51.427-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Características'/><title type='text'>SQLite - Registros de Longitud Variable</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/GESTAR02_archivos/image007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/GESTAR02_archivos/image007.jpg" alt="" border="0" /&gt;&lt;/a&gt;La mayoría de los motores de Bases de Datos SQL, asignan una cantidad fija de espacio en disco para cada fila en la mayoría de los Campos de una determinada Tabla. Tomemos un clásico ejemplo para entender este concepto sencillo, tomemos un Campo de tipo &lt;code&gt;VARCHAR(100)&lt;/code&gt;, esto significa que el motor de Base de Datos asignará 100 Bytes de espacio en disco fijo, independientemente de la cantidad de de información que se almacene en ese Campo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; por el contrario, utiliza únicamente la cantidad de espacio de disco necesario para almacenar realmente la información en ese Campo. Tomando el ejemplo anterior, si quisiera almacenar un solo caracter en un Campo definido como &lt;code&gt;VARCHAR(100)&lt;/code&gt;, entonces solo un único byte de espacio de disco se consume, realmente una característica especial para ahorrar espacios en memorias.&lt;br /&gt;&lt;br /&gt;El uso de registros de Longitud Variable por &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;, tiene una serie de ventajas, entre ellas el resultado de un pequeño archivo de Base de Datos. También hace que la Base de Datos funcione más rápidamente, debido a que hay menos información desperdiciada que leer y recorrer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8778232107770449301?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8778232107770449301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8778232107770449301'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/sqlite-registros-de-longitud-variable.html' title='SQLite - Registros de Longitud Variable'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-5330300189113254236</id><published>2007-11-06T19:08:00.000-08:00</published><updated>2007-11-06T19:20:49.271-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Características'/><title type='text'>SQLite - Tipado Dinámico</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.accu-type.com/vista.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.accu-type.com/vista.JPG" alt="" border="0" /&gt;&lt;/a&gt;La mayoría de los Motores de Bases de Datos SQL utilizan un tipado estático de datos. ¿Qué significa esto? Un dato se asocia con cada columna de una tabla de valores y solo ese tipo de dato se permite almacenar en esa columna. &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;, por el contrario rompe con este pensamiento, imponiendo el concepto del Tipado Dinámico, diciendo que el dato es un valor de la propiedad en sí, no de la columna en la que se va a almacenar el valor.&lt;br /&gt;&lt;br /&gt;Por lo tanto &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; permite al usuario almacenar cualquier valor de cualquier dato en cualquier columna, independientemente de la declaración del tipo de la columna.&lt;br /&gt;&lt;br /&gt;El uso de este nuevo concepto fue una deliberada decisión de diseño que ha demostrado en la práctica ser más fiable y más fácil de usar, especialmente cuando se utilizan en combinación con lenguajes de programación como &lt;span style="font-style: italic;"&gt;Python&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Ruby&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Tcl&lt;/span&gt; entre otros que implementan esta características desde sus inicios.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-5330300189113254236?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5330300189113254236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5330300189113254236'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/sqlite-tipado-dinmico.html' title='SQLite - Tipado Dinámico'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-5103126581096339737</id><published>2007-11-04T18:45:00.000-08:00</published><updated>2007-11-04T19:10:38.992-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Preguntas'/><title type='text'>MiniFAQ - Dudas y Preguntas sobre SQLite</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.eaglelines.com/images/faq.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.eaglelines.com/images/faq.gif" alt="" border="0" /&gt;&lt;/a&gt;¿Que es  &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;?&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;SQLIte&lt;/span&gt; es una nueva generacion de Motores de Base Datos llamados ,&lt;br /&gt;Seudo-Motores . 0  Configuracion , Mas Rapido Usar- Vease SeudoMotores -&lt;br /&gt;&lt;br /&gt;¿Que tipo de Licencia tiene &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;?&lt;br /&gt;Dominio Publico - Permite usarlos en productos comeciales y no comerciales -&lt;br /&gt;&lt;br /&gt;¿Que tipo de aplicacion esta Orientado  SQLite - Alta, Mediana , Baja?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; esta destinado a cualquir tipo de aplicacion, medianas o Semi Complejas  ej aplicacioes desktop ,bibliotecas,padrones ,respaldo de datos, web site.&lt;br /&gt;&lt;br /&gt;¿Que tamaño max puede tener una Base de datos con &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;?&lt;br /&gt;2 Tb - TeraBytes-&lt;br /&gt;&lt;br /&gt;¿Que tamaño max puede tener una tabla de datos con &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;?&lt;br /&gt;1 Gb. -GigaByte -&lt;br /&gt;&lt;br /&gt;¿&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; soporta multiUsuarios?&lt;br /&gt;Puden haber varios , usuarios accediendo simultaneamente a la DB pero solo uno podra escribir en un instante de tiempo ,posee un sistema  um lock , el cual nos dira si se encuntra ocupado atraves del mensaje SQLITE_BUSY&lt;br /&gt;&lt;br /&gt;¿&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; Vs &lt;span style="font-style: italic;"&gt;Oracles, Posgrest , MySql , FireBird&lt;/span&gt;?&lt;br /&gt;Podemos sitar e algunas de sus ventajas,&lt;br /&gt;NO tener que esta instalado un servidor de base datos,&lt;br /&gt;NO existe una arquitectura cliente/servidor&lt;br /&gt;Insersiones , Modificaciones, Eliminacion 8 veces mas Rapidas&lt;br /&gt;Facil de Usar&lt;br /&gt;&lt;br /&gt;¿Desventaja de &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;?&lt;br /&gt;No Poser Itegridad referecial -No portada Aun  -&lt;br /&gt;Pocas comunidades de usarios&lt;br /&gt;&lt;br /&gt;¿&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; Soporta datos tipo &lt;span style="font-style: italic;"&gt;BLOB&lt;/span&gt;?&lt;br /&gt;Desde la version 3, podemos asigar este tipo de datos.&lt;br /&gt;Para los que no estan muy familiarizados con el tema los BLOB (&lt;b&gt;B&lt;/b&gt;inary &lt;b&gt;L&lt;/b&gt;arge &lt;b&gt;OB&lt;/b&gt;jects, &lt;i&gt;grandes objetos binarios&lt;/i&gt;), son elementos utilizados en las Bases de Datos para almacenar datos de gran tamaño que cambian de forma dinámica.&lt;br /&gt;&lt;br /&gt;¿&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; esta escrito en ?&lt;br /&gt;Esta escrito en el Lenguaje de Programación &lt;a href="http://elcodigok.blogspot.com/search/label/C%2FC%2B%2B"&gt;C++&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;¿&lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; con que Lenjuage puedo utilizarlo?&lt;br /&gt;Podemos hace uso de estos lenguajes:&lt;br /&gt;Java, Groovy,Python, C++, Ruby, Tcl,etc&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-5103126581096339737?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5103126581096339737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/5103126581096339737'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/minifaq-dudas-y-preguntas-sobre-sqlite.html' title='MiniFAQ - Dudas y Preguntas sobre SQLite'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-6256834613773748566</id><published>2007-11-04T18:38:00.000-08:00</published><updated>2007-11-04T19:15:20.962-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Preguntas'/><title type='text'>Cuando usar SQLite</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img460.imageshack.us/img460/1695/azulnnnnuu9.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 259px; height: 194px;" src="http://img460.imageshack.us/img460/1695/azulnnnnuu9.jpg" alt="" border="0" /&gt;&lt;/a&gt;Situaciones donde  &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; Funciona Bien&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;Mayoria de los Web Site (menos de 100 mil visitas diarias).&lt;/li&gt;&lt;li&gt;Subtituto de archivos de uso especifico.&lt;/li&gt;&lt;li&gt;Base de datos Internas o Temporarias.&lt;/li&gt;&lt;li&gt;Aplicaciones Locales.&lt;/li&gt;&lt;li&gt;Subtituto de base de Datos de gran porte en pruebas, demostraciones y prototipos.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Formato para archivos de programas.&lt;/li&gt;&lt;li&gt;Dispositivos y programas enbebidos.&lt;/li&gt;&lt;li&gt;Base datos de Respaldo o Backup.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Donde SQLite No rinde un 100 %&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Aplicaciones Cliente/Servidor.&lt;/li&gt;&lt;li&gt;Mayoria de los Web Site (mas de 1 millon visitas diarias).&lt;/li&gt;&lt;li&gt;Aplicacione de alto concurrencia.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-6256834613773748566?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6256834613773748566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/6256834613773748566'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/cuando-usar-sqlite.html' title='Cuando usar SQLite'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8693395460765181488</id><published>2007-11-04T12:14:00.000-08:00</published><updated>2007-11-04T12:24:12.371-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Características'/><title type='text'>SQLite - Compacto</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://catirestrepo.files.wordpress.com/2007/08/manos-mundo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 154px; height: 156px;" src="http://catirestrepo.files.wordpress.com/2007/08/manos-mundo.jpg" alt="" border="0" /&gt;&lt;/a&gt;Cuando se pensó en optimizar el código SQLite en cuanto a su tamaño, toda la librería funcional es menor de 225 KiB (medido en una ix86 utilizando el tamaño de utilidad del compilador GNU), de este modo es posible desactivar en tiempo de compilación numerosas características innecesarias para poder reducir aún más el tamaño de la biblioteca llegando mas o menos a 170 KiB&lt;br /&gt;&lt;br /&gt;La mayoría de otros motores de Bases de Datos SQL, son muchísimos mas grandes que este. Inclusos motores de Bases de Datos sin todas las características y las funcionalidades e inclusives comprimidos son el doble de pesados que SQLite.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8693395460765181488?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8693395460765181488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8693395460765181488'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/sqlite-compacto.html' title='SQLite - Compacto'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-8036473174677343434</id><published>2007-11-01T21:33:00.000-07:00</published><updated>2007-11-01T21:47:36.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Características'/><title type='text'>SQLite - Único archivo de Base de Datos</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.icondrawer.com/img/PF_SQL_icon_base.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 152px; height: 152px;" src="http://www.icondrawer.com/img/PF_SQL_icon_base.jpg" alt="" border="0" /&gt;&lt;/a&gt;Una &lt;a href="http://http//elcodigok.blogspot.com/search/label/Bases%20de%20Datos"&gt;Base de Datos&lt;/a&gt; &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; es un único archivo de disco ordinario y que además puede estar situado en cualquier parte del directorio dentro de las jerarquías de directorios. Esto trae como ventaja que el archivo de &lt;a href="http://elcodigok.blogspot.com/search/label/Bases%20de%20Datos"&gt;Base de Datos&lt;/a&gt; puede ser fácilmente copiado en algún dispositivo de memoria por ejemplo en USB o por correo electrónico.&lt;br /&gt;&lt;br /&gt;Otros motores de &lt;a href="http://elcodigok.blogspot.com/search/label/Bases%20de%20Datos"&gt;Bases de Datos&lt;/a&gt; tienden por lo general a almacenar gran cantidad o colección de archivos, que solo el motor de la &lt;a href="http://elcodigok.blogspot.com/search/label/Bases%20de%20Datos"&gt;Base de Datos&lt;/a&gt; puede llegar a tener acceso a las mismas, esto hace que los datos sean más seguro y más difíciles de acceder.&lt;br /&gt;&lt;br /&gt;Algunos motores de &lt;a href="http://http//elcodigok.blogspot.com/search/label/Bases%20de%20Datos"&gt;Base de Datos&lt;/a&gt; SQL proporciona la opción de escribir directamente en el disco y pasar por el sistema de ficheros todos juntos. Esto aporta una mayor rendimiento, pero a costa de una considerable complejidad de instalación y mantenimiento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-8036473174677343434?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8036473174677343434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/8036473174677343434'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/sqlite-nico-archivo-de-base-de-datos.html' title='SQLite - Único archivo de Base de Datos'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-914482251362662825</id><published>2007-11-01T17:28:00.000-07:00</published><updated>2007-11-01T17:37:11.283-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Presentacion'/><title type='text'>Presentacion de SQLITE</title><content type='html'>Aqui una trasparencia de &lt;a href="http://sqlite-latino.googlegroups.com/web/CharlaSQliteSalta.pdf?gda=fZg1akYAAADvHZe2UCkaM6za6uQ2ZjF7NTA_Q5CYLJe9QaWZjwdZL2G1qiJ7UbTIup-M2XPURDTj5h3FECMPI7eM7-NKpHk-XxbIdvm8Mmgwk5PLz-0MbQ"&gt;sqlite&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-914482251362662825?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/914482251362662825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/914482251362662825'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/presentacion-de-sqlite.html' title='Presentacion de SQLITE'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-3479800976920816960</id><published>2007-11-01T11:49:00.000-07:00</published><updated>2007-11-01T12:02:21.235-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Características'/><title type='text'>SQLite - Serverless</title><content type='html'>La mayoría de los motores de base de datos SQL se ejecutan como un proceso separado del servidor. Los programas que quieren acceder a la base de datos para comunicarse con el servidor mediante el uso de algún tipo de comunicación (normalmente TCP/IP) para enviar peticiones al servidor y recibir de vuelta los resultados. Entendido esto podemos decir que &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; no trabaja de esa manera. Con &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;, el proceso que quiere acceder a la base de datos lee y escribe directamente de los archivos de base de datos en el disco. No existe un intermediario proceso servidor.&lt;br /&gt;&lt;br /&gt;Existe muchas ventajas y desventajas con respecto a los servidores, La principal ventaja es que no existe ningún proceso de instalación de servidor, como así también su configuración, inicialización, etc. Por ello es una de las razones por la cuanl &lt;a href="http://sqlite-latino.blogspot.com/2007/10/sqlite-configuracin-0.html"&gt;SQLite - Configuración [0]&lt;/a&gt;. Cualquier programa que sea capaz de acceder al disco se puede utilizar una base de datos &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Por otro lado, un motor de base de datos que utiliza un servidor puede proporcionar una mejor protección frente a fallos en la aplicación del cliente - se dirige a los punteros en un cliente no puede corromper la memoria en el servidor.&lt;br /&gt;&lt;br /&gt;La mayoría de los motores de base de datos SQL son cliente/servidor. De los que son servidores, &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt; es el único que sabe de este autor que permite que múltiples aplicaciones puedan acceder a la misma base de datos al mismo tiempo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-3479800976920816960?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3479800976920816960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/3479800976920816960'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/11/sqlite-serverless.html' title='SQLite - Serverless'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-4629413223069992830</id><published>2007-10-31T12:51:00.000-07:00</published><updated>2007-10-31T13:07:04.034-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Características'/><title type='text'>SQLite - Configuración [0]</title><content type='html'>Bienvenidos a esta sección de la nueva comunidad &lt;span style="font-weight: bold;"&gt;SQLite-Latino&lt;/span&gt;, Características de este PseudoMotor llamado &lt;span style="font-weight: bold;"&gt;SQLite&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Comencemos a ver algunas cosas interesantes que a través del tiempo nos vamos a enganchar todos.&lt;br /&gt;&lt;br /&gt;Como leyeron en el titulo SQLite Configuración 0 y ahora les explico por es esto: SQLite NO necesita ser "instalado", tampoco tenemos la necesidad de prender, reiniciar o apagar algún servidor e incluso configurarlo.&lt;br /&gt;&lt;br /&gt;Otro dato importante, no está la necesidad de que haya algún Adminisitrador de la &lt;a href="http://elcodigok.blogspot.com/search/label/Bases%20de%20Datos"&gt;Base de Datos&lt;/a&gt; para crearlas o para asignar o dar permisos de acceso a los usuarios.&lt;br /&gt;&lt;br /&gt;No es necesario adoptar medidas para recuperar después de una caída del sistema o la falta de alimentación.&lt;br /&gt;&lt;br /&gt;Toda esta información la extraje de &lt;a href="http://www.sqlite.org/different.html"&gt;aqui&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-4629413223069992830?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4629413223069992830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/4629413223069992830'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/10/sqlite-configuracin-0.html' title='SQLite - Configuración [0]'/><author><name>Daniel M. Maldonado</name><uri>http://www.blogger.com/profile/08463520473424685645</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1943324940234254510</id><published>2007-09-03T07:41:00.000-07:00</published><updated>2007-09-03T07:58:22.001-07:00</updated><title type='text'>Que es SQLITE</title><content type='html'>Segun D. Richard Hipp, Sqlite son librerias escritas  en C&lt;span class="content"&gt; que implementa un motor de base de datos para SQL92 empotrable.&lt;/span&gt;Segun  Wikipedia lo define de la misma forma, Pero Segun Quien escribe este blogspot, Sqlite permite dar otro tipo de enfoque a las base de datos , y dejar de ser Libreria para convertirse en PseudoMotor - Aparenta ser un motor pero no lo es -&lt;br /&gt;Luego Subire una trasnsparencias de Sqlite..&lt;br /&gt;Saludos Gerardo antonio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1943324940234254510?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1943324940234254510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1943324940234254510'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/09/que-es-sqlite.html' title='Que es SQLITE'/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-648501934927072213.post-1590189779605785552</id><published>2007-08-28T09:43:00.000-07:00</published><updated>2007-08-28T09:49:44.829-07:00</updated><title type='text'></title><content type='html'>Bienvenidos a SQLITE LATINO AMERICA EL MEJOR primer SeudoMotor de Base de Datos en el mundo..&lt;br /&gt;Saludos Gerardo Antonio Cabero&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/648501934927072213-1590189779605785552?l=sqlite-latino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1590189779605785552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/648501934927072213/posts/default/1590189779605785552'/><link rel='alternate' type='text/html' href='http://sqlite-latino.blogspot.com/2007/08/bienvenidos-sqlite-latino-america-el.html' title=''/><author><name>Gerard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_uJwbWnvfNFg/SVqBiGJbJ_I/AAAAAAAAATI/kKrzI821TTg/S220/mail.jpg'/></author></entry></feed>
