Ejemplo-VFP-accesando-SQLite-embebido

2,578 views
Skip to first unread message

Hernan Cano

unread,
Jul 3, 2013, 10:02:38 PM7/3/13
to sistemas-gestores...@googlegroups.com
Buenas noches, amigos.

Deseo compartir con ustedes un ejemplo de cómo accesar una base de datos utilizando el motor SQLite en su versión embebido.

Habrá otras entregas utilizando otros motores y otros SQLite (el segundo es utilizando ODBC).

Chao.
Ejemplo-VFP-accesando-SQLite.zip

Analyzer

unread,
Jul 3, 2013, 10:20:05 PM7/3/13
to sgbd
Hernán Cano,

Gracias por su brillante aporte, sobre todo en estos tiempos en que todos hablan de MariaDB como sustituto de MySql. (Como si el cambio en las empresas de hosting de todo el mundo se fuera a dar en un abrir y cerrar de ojos, habiendo miles de sistemas corriendo en la web actualmente con MySql).

¿SQLite Embebido que significa exactamente, con VFP?..


Saludos!



--
Has recibido este mensaje porque estás suscrito al grupo "Sistemas Gestores de Bases de Datos" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/sistemas-gestores-de-bases-de-datos.
 
 

Hernan Cano

unread,
Jul 3, 2013, 10:40:32 PM7/3/13
to sistemas-gestores...@googlegroups.com
Un motor embebido es que no necesita ser instalado como lo conoces de MySQL, SQL Server, Oracle, etc... ni el motor ni el ODBC.

Un motor embebido está en una DLL: sólo hay que declarar la DLL y ya puedes usar el motor... dentro de tu app sdin instalar otod los 'perendengues' de un motor en el computador servidor....

Dado que SQLite dice permitir esta característica quise expplorarla, y logré lo que les expongo.

Chao.

Analyzer

unread,
Jul 3, 2013, 10:45:55 PM7/3/13
to sgbd
Y el motor embebido está solo en el PC que sirve como "repositorio de datos" o también en cada PC cliente?..

Qué sentido tiene tener un motor en cada PC cliente, si se pudiera usar un driver odbc para simplemente conectar al servidor?..

Disculpeme tanta ignorancia mia..


Saludos!

Carlos Miguel FARIAS

unread,
Jul 4, 2013, 8:03:52 AM7/4/13
to sistemas-gestores...@googlegroups.com
Estimado Analyser: La BD SQLite, es una simple tabla (como la que usa Access), dicha tabla puede estar en cualquier lugar físico que pueda ser direccionado por una  aplicación (operativamente igual que las DBFs).
El SQL de SQLite tiene una serie de cosas interesantes para analizar y usar, tiene la contra de que cada vez que un usuario modifica datos en la bd, se bloquea TODA LA BASE DE DATOS (no un registro como en DBFs u otros SGBD).
Lo que pasa que la dll es muy liviana y usa poco requerimientos de máquina.
La utilidad es usarla en reemplazo de DBFs en entornos con pocos usuarios (actualizando).
Ten en cuenta que SQLite es usada por varios navegadores para manejar sus datos en cada PC, y se usa mucho en móviles, justamente porque en un movil no tienes accesos concurrentes y es muy liviano el motor.
Saludos: Miguel, La Pampa (RA)

Analyzer

unread,
Jul 4, 2013, 11:15:27 AM7/4/13
to sgbd
CMF,

Gracias! Eso aclara muchas cosas..


Saludos!

Carlos Vasquez

unread,
Jul 4, 2013, 12:13:10 PM7/4/13
to sistemas-gestores...@googlegroups.com
Me gustaria que me pasaran un manual o que me indicaran donde encuentro un curso o video tutorial de visual fox, hay varias cosas que me gustaria repasar, que no me acuerdo... ya que cambie de tecnologia por la empresa donde estoy trabajando, y no he practicado fox desde hace un tiempito... :P

saludos!
Atentamente:
Ingeniero Carlos Alfredo Vilanova
Servicios de Outsourcing en 
Soporte Técnico, Diseño Web, Impresión Digital, Diseño Gráfico
Diseño de Sistemas Informáticos, SEO, posicionamiento en la red, y mucho más...
Tel.: 7459 1228

Alfonso Ramirez Diaz

unread,
Jul 4, 2013, 12:15:09 PM7/4/13
to sistemas-gestores...@googlegroups.com
Si colocas la palabra VISUAL FOXPRO en youtube salen varios videos incluyendo uno de 2 horas que dice Tutorial Basico.


Alfonso Ramirez Diaz
Gestpyme - Informatica y Gestión
Fono: 055-833233
Movil: 09-82239821

Analyzer

unread,
Jul 4, 2013, 12:19:15 PM7/4/13
to sgbd
Por favor, revisa este hilo de un nuevo tema donde se indican algunos manuales o tutoriales.



Saludos!

Hernan Cano

unread,
Jul 4, 2013, 3:52:34 PM7/4/13
to sistemas-gestores...@googlegroups.com
Carlos:
 
Varios colegas te han contestado en otro hilo.
 
Recuerda que este foro es de motores de bases de datos. Hay dos muy buenos foros de VFP:
Comunidad de VFp en español
Mundo Visual FoxPro
 
Ahí encontrarás suficiente material sobre VFP.

By.

 
El 4 de julio de 2013 11:13, Carlos Vasquez<ingeniero...@gmail.com> escribió:

Hernan Cano

unread,
Jul 4, 2013, 4:21:19 PM7/4/13
to sistemas-gestores...@googlegroups.com
Gracias, Carlos, por el apoyo.
 
Dado que mis conocimientos sobre SGBD son escasísimos, te consulto:
Aún el "SQLite embebido en un computador" se puede usar en red por otras estaciones?
Suponiendo que sí, la metodología sería en las estaciones sólo tener la app mía (en VFP claro!!) y la DLL del SQLite embebido, pues los datos estarían en otra estación de la red. Mi duda aquí es: "SQLite embebido" permite concurrencia? Hace mucho tiempo leí que SQLite embebido sólo podía ser usado monousuario, lamento no tener la ref. Sólo indícame si esta limitante aún se mantiene (no tengo por el momento un escenario para hacer pruebas en red).

Observa la sgte respuesta que le doy al colega sobre ODBC (y me corriges si es del caso).
 
 
El 4 de julio de 2013 07:03, Carlos Miguel FARIAS<carlosmig...@gmail.com> escribió:

Hernan Cano

unread,
Jul 4, 2013, 4:28:19 PM7/4/13
to sistemas-gestores...@googlegroups.com
Colega "analista":
 
Tener "un motor en cada PC cliente" tiene la ventaja de que no tienes que instalar un motor en el servidor y luego un ODBC en cada cliente. Con la ODBC de SQLite tienes ambas cosas sin tenerlas que instalar por aparte de tu app, pues están en una DLL, que "registras" como una DLL cualq en tu app.

Si puedes usar un driver ODBC para conectarte al servidor y puedes manejar la complejidad de (1) instalar el servidor de tu motor en tu computador servidor, (2) instalar el ODBC en cada estación que se conecte al servidor, y por último (3) instalar tu app, sólo hazlo.
 
Aquí estoy mostrando una metodología para usar el concepto de motor embebido en nuestras app.
 
Pero si prefieres hacer 1, 2 y 3, no hay problema. Eso es lo que nos hace programadores: sabemos hacer las cosas de forma diferentre y por éso usamos esta herramienta (VFP).

Chao, colega....

Carlos Miguel FARIAS

unread,
Jul 4, 2013, 4:49:31 PM7/4/13
to sistemas-gestores...@googlegroups.com
El SQLite es un motor que va en cada máquina que lo use, funciona como VFP con referencia a las dbf.
SQLite no es bueno cuando tenes usuarios concurrentes modificando.
Fijate en este mismo hilo lo que escribi antes.
Saludos: Miguel, La Pampa (RA)
--

Hernan Cano

unread,
Jul 4, 2013, 5:36:39 PM7/4/13
to sistemas-gestores...@googlegroups.com
Ok, Carlos.
Dónde puedo encontrar info sobre la dificultad de SQLite con usuarios concurrentes?

Carlos Miguel FARIAS

unread,
Jul 5, 2013, 6:10:46 AM7/5/13
to sistemas-gestores...@googlegroups.com

No es un problema, es simplemente lento, y en todo caso puede darte error la transacción. En la misma pagina de la herramienta lo indican.
Pero es muy fácil de entender, al menos si tienes nociones de entornos multiusuario.
En vfp, cuando estas en multiusuario, tablas shared, al modificar una fila de una tabla dbf, otros usuarios no van a poder usar esa fila para modificarla (si leerla).
Otros usuarios van a poder modificar sin problemas otras filas (registros) de esa u otras tablas.
En vfp con dbf, al agregar un registro, se bloquea brevemente la cabecera de la tabla en que se agregan registros, lo que no impide que otros usuarios modifiquen filas.
En resumen en dbf, se pueden modificar filas de una o diferentes tablas a la vez por distintos usuarios mientras no sean las mismas. E insertar, puede demorarse si varios usuarios lo hacen a la vez, sobre la misma tabla, sobre todo, cuando se usan autoincrementales.
Con sqlite, toda modificación o inserción de datos de cualquier fila o tabla BLOQUEA TODA LA BASE DE DATOS.
Eso evidentemente, hace el proceso de cambio mucho mas lento y crece exponencialmente con el aumento usuarios.


Saludos: Miguel, La Pampa (RA)

--

Hernan Cano

unread,
Jul 5, 2013, 1:42:43 PM7/5/13
to sistemas-gestores...@googlegroups.com
Está bien, Carlos.
 
Pero entonces la viabilidad de SQLite es "migrar" a un motor (o seudo-motor) que mejore las prestaciones del "motor de los DBFs" y evidentemente para apps pequeñas, que es mi caso.
 
Si las apps son medianas o casi grandes, usaría entonces MySQL o MariaDB, o PosgreSQL o FireBird, o cualq otro.

Carlos Miguel FARIAS

unread,
Jul 5, 2013, 1:59:39 PM7/5/13
to sistemas-gestores...@googlegroups.com

En vfp, no le veo caso a sqlite. Para eso uso nativas. Sqlite lo veo en python, porque para entornos chicos, usar dbf no es tan fácil. Y me sirve para prototipear. O para cierto tipos de aplicaciones que pueden hacerse en python, donde necesito una bd para indagar.
Por ejemplo. Si en python necesito una aplicación para gestión de mi cátedra, con 200 estudiantes con hasta 40 asistencias 9 evaluaciones por estudiante, sqlite me sirve, ya que además posiblemente sea el único cargando datos o importando desde excel. En vfp, usaría dbf, no tengo que hacerme un mundo.
Para celebrar a fin de año, tiro cañitas voladoras, no tiro un Saturno V.


Saludos: Miguel, La Pampa (RA)

--

Hernan Cano

unread,
Jul 5, 2013, 2:07:34 PM7/5/13
to sistemas-gestores...@googlegroups.com
Sí, Carlos.
Sólo estoy compartiendo. Te agradezco tu comentario inicial; el final no lo entendí.
 
VFP rocks!!!!!!

Carlos Miguel FARIAS

unread,
Jul 5, 2013, 8:57:50 PM7/5/13
to sistemas-gestores...@googlegroups.com

Lo que quiero decir que hay que usar la herramienta apropiada y no sobre dimensionar sin necesidad.
Sabes que es un Saturno V?


Saludos: Miguel, La Pampa (RA)

Fabian Raúl Silva

unread,
Feb 12, 2014, 10:27:27 AM2/12/14
to sistemas-gestores...@googlegroups.com
Buenas Hernan, aunque es un post viejo del grupo, te agradezco por el ejemplo, me ha servido de mucho para poder pasar una base de datos SQLite desde una pequeña app android para captura de pedidos y poder pasarla a un dbf (el cual es toma en una app ya existente de produccion).

Saludos.
- Fabian

Hernan Cano

unread,
Feb 13, 2014, 5:32:50 PM2/13/14
to sistemas-gestores...@googlegroups.com
Listo, Fabián.

Y si consideras preguntar algo más, lo analizamos.

Chao.

Rodolfo Ruiz Rivera

unread,
Apr 8, 2014, 12:04:38 AM4/8/14
to sistemas-gestores...@googlegroups.com
Hola Hernan he tratado de correr tu ejemplo pero no pasa de "No se pudo registrar  NewObjectsPack1.dll", estoy trabajando en Win 7 pro.  Tendrá algo que ver el sistema operativo

Hernan Cano

unread,
Apr 8, 2014, 1:39:47 AM4/8/14
to sistemas-gestores...@googlegroups.com
Sí.
Wind7 no permite registrar (automáticamente, por programa) las DLLs.

Para solventar el inconveniente, puedes registrar manualmente la librería y volver a ejecutar.

Me agrada que participes.

Chao.



El 7 de abril de 2014, 21:04, Rodolfo Ruiz Rivera escribió:
Hola Hernan he tratado de correr tu ejemplo pero no pasa de "No se pudo registrar  NewObjectsPack1.dll", estoy trabajando en Win 7 pro.  Tendrá algo que ver el sistema operativo

--

Roxana Demattei

unread,
May 3, 2019, 9:49:52 AM5/3/19
to Sistemas Gestores de Bases de Datos
Hola! Como estas?
Me viene muy bien tu ejemplo porque necesito hacer una aplicacion en Android que tome los datos de una aplicacion que esta en VFP; y lo mas practico es convertir las DBF a un SQLLITE y luego transferir eso al telefono.
El tema es que no pude registrar las librerias? Tengo windows 10 y VFP 9. Alguien me puede dar una mano?
Trate de registrarlo manual con el regsrv32 y tampoco funciono. Me podrian dar una mano?
Muchas gracias!

Saludos,

Roxana

Roxana Demattei

unread,
May 3, 2019, 9:53:54 AM5/3/19
to Sistemas Gestores de Bases de Datos
Hola Fabian! Estoy desarrollando también una Aplicación Android y necesito pasarle los datos de las DBF que tengo en VFP a SqlLite para que luego lo lea en el Celular, con la aplicacion Android. Me podrias pasar el ejemplo que hiciste? Desde ya muchas gracias!
Saludos,

Roxana

jherna...@gmail.com

unread,
May 3, 2019, 5:55:12 PM5/3/19
to Sistemas Gestores de Bases de Datos
Roxana:
Haz lo sgte:

1. Desde el símbolo del sistema, te ubicas en el dir C:\WINDOWS\SYSTEM32 y ejecutas
regsvr32 D:\APLICACION\subdir\NewObjectsPack1.dll
regsvr32 D:\APLICACION\subdir\SQLITE3COMUTF8.dll

2. Desde el símbolo del sistema, te ubicas en el dir C:\WINDOWS\SYSwow64 y ejecutas
regsvr32 D:\APLICACION\subdir\NewObjectsPack1.dll
regsvr32 D:\APLICACION\subdir\SQLITE3COMUTF8.dll


¿Cuál es la idea? ¿Qué se pretende?
Con lo anterior te hago caer en cuenta de:
1. Para este ejemplo, debes registrar dos librerías (si ves el Ejemplo-VFP-accesando-SQLite.prg te hubieras dado cuenta de ello).
2. Cuando he necesitado ejecutar en 64 bits, lo que he hecho es registrar en ambas arquitecturas... la misma DLL, sí: la misma... (sinceramente sólo he trabajado --desde entonces-- con SQLITEODBC.DLL, y no con estas dos, pues prefiero ODBC a la metodología "ADODB.RecordSet", que es clásica de .NET).

Para poder registrar desde el programa, desde nuestra aplicación en VFP, recordemos que se debe "ejecutar como administrador". Para ello la recomendación sería: crear el acceso directo nuestra app y el acceso directo marcarlo "ejecutar como administrador". Si quisiéramos registrar desde la ventana del sistema (ventana DOS), también debe haberse abierto con el click en "ejecutar como administrador".

También: lo anterior sólo hay que ejecutarlo la primera vez que se ejecuta la app en cada computador, nada más.

Pero si necesitas algo más, dále: pregunta... Y por favor: detalla lo que haces para poder indicarte dónde puede estar el impasse.
Reply all
Reply to author
Forward
0 new messages