start with sqlite

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

User avatar
SALINETAS24
Posts: 349
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 22 times
Been thanked: 24 times

Re: start with sqlite

Post by SALINETAS24 » Tue May 07, 2019 7:09 pm

Hola a todos, voy un poco perdido con el tema del SQL.

Creo entender que el tema del SQL es como una EXCEL y cada hoja seria una DBF, o una tabla de datos (Clientes,Articulos, etc).Tambien me parece que SQLite trabaja solo en LOCAL, que funcionaria como lo estamos haciendo en RED pero mejorando los tiempos de respuesta cuando trabajamos con muchos terminales (por cierto ¿sabeis a partir de cuantos terminales se nota la caida de velocidad?)...., y para el resto (MySQL.., etc) si que pueden trabajar con una instalación en un servidor remoto, permitiendo el acceso a los datos a través de INTERNETE .. ¿Estoy en lo cierto...?

También he visto algún ejemplo (en Youtube sobre el minuto 11, - https://www.youtube.com/watch?v=EjO5-6Nzc-g ) donde en las distintas definiciones de tablas se crea relación entre los campos, pero todo lo hacen con una especie de DBU.., una herramienta, pero molaria hacerlo a mano... como siempre. ¿se puede hacer..?
En el ejemplo del amigo Mustafa que funciona de maravilla crea una dbf que después encripta. Os pongo trozo de código donde la crea. Ahora bien..., todos los ejemplo que estoy viendo en el foro (magnificos), trabajan con una sola DBF o TABLA.

Sería posible por favor, el mostrarnos un ejemplo parecido al de \SAMPLES\CONTACTOS que se trabaje con varios DBF, para ver como sería con MYSQL o con SQLITE.

Como siempre, muchas gracias por vuestras respuestas y vamos con la cervecita...., que vengo asado de Jerez y motgp :lol:


Code: Select all

*-------------------------------------------*
Function crearbase(mDb)
*-------------------------------------------*

*----------------------------------------------------------------------------------------------------*

 * miscsql always require two parameters. First one is dbo object and the next one is the query. 
 * When creating a database, we have to use connect2db with .t. as the second parameter. 
 * I hope this helps.
 * Rathinagiri

 * miscsql siempre requiere dos parámetros. El primero es objeto dbo y la siguiente es la consulta. 
 * Al crear una base de datos, tenemos que usar con connect2db. T. como el segundo parámetro.
 * Espero que esto ayude.
 * Rathinagiri 

*----------------------------------------------------------------------------------------------------*

  local sQry
  local lOk := .f.

  sQry := "CREATE TABLE IF NOT EXISTS personales (id INTEGER PRIMARY KEY, nombre VARCHAR(55),telefono VARCHAR(15), fecha VARCHAR(10), Married VARCHAR(6), notas VARCHAR(80),PHOTO VARCHAR(15) );"  

  dbo := connect2db(mDb, .t.)
  lOk := miscsql(dbo,sQry)

return nil

User avatar
apais
Posts: 317
Joined: Fri Aug 01, 2008 6:03 pm
Location: uruguay
Has thanked: 52 times
Been thanked: 32 times
Contact:

Post by apais » Wed May 08, 2019 2:12 am

SQL es solamente un lenguaje de consulta de datos.
Es independente de cómo se almacenan los datos.
Con este leguaje tu puedes consultar y obtener datos de una o varias tablas a la vez.
PERO: el resultado siempre es una COPIA almacenada en un recordset.
Un recordset lo puedes conceptualizar como si fuera un array en la memoria de tu equipo.
O sea que tu NUNCA ves datos directamente de las tablas sino copias de ellas o copias de subconjuntos de ellas.
O sea: el equipo cliente arma una sentencia de consulta (string) que envía al servidor via pipes o tcp/ip.
El servidor calcula el resultado (recordset) y lo devuelve por la misma vía hacia el cliente y ahi ya se desentiende del tema.
Te ha quedado claro el concepto ?

Saludos
Angel

User avatar
mustafa
Posts: 849
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Been thanked: 129 times
Contact:

Post by mustafa » Wed May 08, 2019 9:46 am

Hola amigo José Manuel "SALINETAS24"
Lo que tu planteas tener varias base de datos (tablas) en
una sola tienes el ejemplo de Dragan lo tienes en el sample
step3.zip tienes una base de datos -> "prenos.db3"
Si utilizas mi Sample en el converter DBF -SQLite que es del
Maestro Rathinagiri -> dbf2sqlite.zip
viewtopic.php?p=20587#p20587
veras que dentro de "prenos.db3" hay varias bases de datos.

Personalmente yo solo estoy utilizando una sola base de datos
es decir lo mismo que fuera una Base DBF.

Es cuestión de experimentar con este tema muy apasionante de SQLite
Una forta abraça

Mustafa

Eric.Developer
Posts: 11
Joined: Mon Nov 13, 2017 5:22 am
Contact:

Post by Eric.Developer » Wed May 08, 2019 10:32 am

see this advanced tool built in Harbour... SQLite Editor (i: DBF, e: MariaDB, MySQL, Excel, JSON)
mustafa wrote:...
ask: which you use the SQLite manager?
SQLite manager?
....

User avatar
mustafa
Posts: 849
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Been thanked: 129 times
Contact:

Post by mustafa » Wed May 08, 2019 11:22 am

Hi Eric
+1

User avatar
SALINETAS24
Posts: 349
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 22 times
Been thanked: 24 times

Post by SALINETAS24 » Thu May 09, 2019 5:00 pm

Gracias a todos por contestar, sigo perdido y sigo investigando..vamos con la cervecita.

User avatar
Ismach
Posts: 110
Joined: Wed Nov 28, 2012 5:55 pm
DBs Used: DBF, mySQL, Mariadb, postgreSQL, Oracle, Db2, Interbase, Firebird, and SQLite
Location: Buenos Aires - Argentina
Been thanked: 7 times

Post by Ismach » Fri May 10, 2019 6:49 pm

A ver.... El SQL es una parte de un MODELO CONCEPTUAL mucho mas complejo
que deriva del modelo relacional en la teoria de las bases de datos
existen 2 grandes lenguajes MDL y DDL
el DDL (DATA DEFINITION LANGUAGE) es el Lenguage de definicion de datos
e integra las sentencias

CREATE – usada para los objetos (table, index, function, views, store procedure and triggers).
DROP – usada para los objetos existente anteriores
ALTER - usada para modificar la estructura de cualquier objeto de la base de datos.
TRUNCATE – usada para eliminar registros de las tablas incluidas las del propias tablas master.
COMMENT – usada para definir descripciones o detalles en el diccionario.
RENAME – usada en el renombrado de objetos com tablas indices etc etc...
y el MDL (Data Manipulation Language) es el lenguaje para manipular los datos de la base
e incluye las sentencias
SELECT FROM ....
INSERT INTO ....
UPDATE mitabla SET ...
DELETE FROM mytable...

existen lenguajes adicionales como DCL(Data Control Language)
aunque muchos libracos no lo consideran asi y las sentencias son
el GRANT e REVOKE

ademas esta el TCL (transaction Control Language)
este se caracteriza por tratar su efecto sobre el estado
de un objeto como una tabla respecto a una operacion o un grupo de operaciones,
y las mismas son
COMMIT deja una version temporal de un objeto a definitivo e irreversible.
ROLLBACK vuelve atras una version termporal y deja sin efecto una o un grupo de operacione sobre un objeto.
SAVEPOINT – deja puntos de retorno en un grupo de operaciones que se pueden partir en subgrupos de operaciones.
SET TRANSACTION define las carcteristicas de la transaccion.
...
Ismach

User avatar
Ismach
Posts: 110
Joined: Wed Nov 28, 2012 5:55 pm
DBs Used: DBF, mySQL, Mariadb, postgreSQL, Oracle, Db2, Interbase, Firebird, and SQLite
Location: Buenos Aires - Argentina
Been thanked: 7 times

Post by Ismach » Fri May 10, 2019 6:52 pm

Para poder diseñar una buena base de datos,
de facil mantenimiento, buena performace, buen desempeño,
y gran escalabilidad, es aplicar FORMAS NORMALES eso aprendi en la facultad y lo lo repito
en cada mañana cuando me levanto... jaja

User avatar
jairpinho
Posts: 344
Joined: Mon Jul 18, 2011 5:36 pm
Location: Rio Grande do Sul - Brasil
Has thanked: 3 times
Been thanked: 11 times
Contact:

Post by jairpinho » Fri May 10, 2019 11:06 pm

SALINETAS24 wrote:
Tue May 07, 2019 7:09 pm
Hola a todos, voy un poco perdido con el tema del SQL.

Creo entender que el tema del SQL es como una EXCEL y cada hoja seria una DBF, o una tabla de datos (Clientes,Articulos, etc).Tambien me parece que SQLite trabaja solo en LOCAL, que funcionaria como lo estamos haciendo en RED pero mejorando los tiempos de respuesta cuando trabajamos con muchos terminales (por cierto ¿sabeis a partir de cuantos terminales se nota la caida de velocidad?)...., y para el resto (MySQL.., etc) si que pueden trabajar con una instalación en un servidor remoto, permitiendo el acceso a los datos a través de INTERNETE .. ¿Estoy en lo cierto...?

También he visto algún ejemplo (en Youtube sobre el minuto 11, - https://www.youtube.com/watch?v=EjO5-6Nzc-g ) donde en las distintas definiciones de tablas se crea relación entre los campos, pero todo lo hacen con una especie de DBU.., una herramienta, pero molaria hacerlo a mano... como siempre. ¿se puede hacer..?
En el ejemplo del amigo Mustafa que funciona de maravilla crea una dbf que después encripta. Os pongo trozo de código donde la crea. Ahora bien..., todos los ejemplo que estoy viendo en el foro (magnificos), trabajan con una sola DBF o TABLA.

Sería posible por favor, el mostrarnos un ejemplo parecido al de \SAMPLES\CONTACTOS que se trabaje con varios DBF, para ver como sería con MYSQL o con SQLITE.

Como siempre, muchas gracias por vuestras respuestas y vamos con la cervecita...., que vengo asado de Jerez y motgp :lol:


Code: Select all

*-------------------------------------------*
Function crearbase(mDb)
*-------------------------------------------*

*----------------------------------------------------------------------------------------------------*

 * miscsql always require two parameters. First one is dbo object and the next one is the query. 
 * When creating a database, we have to use connect2db with .t. as the second parameter. 
 * I hope this helps.
 * Rathinagiri

 * miscsql siempre requiere dos parámetros. El primero es objeto dbo y la siguiente es la consulta. 
 * Al crear una base de datos, tenemos que usar con connect2db. T. como el segundo parámetro.
 * Espero que esto ayude.
 * Rathinagiri 

*----------------------------------------------------------------------------------------------------*

  local sQry
  local lOk := .f.

  sQry := "CREATE TABLE IF NOT EXISTS personales (id INTEGER PRIMARY KEY, nombre VARCHAR(55),telefono VARCHAR(15), fecha VARCHAR(10), Married VARCHAR(6), notas VARCHAR(80),PHOTO VARCHAR(15) );"  

  dbo := connect2db(mDb, .t.)
  lOk := miscsql(dbo,sQry)

return nil

segue a equivalência
estrutura sqlite.jpg
estrutura sqlite.jpg (57.67 KiB) Viewed 533 times
Jair Pinho
HMG ALTA REVOLUÇÃO xBASE
HMG xBASE REVOLUTION HIGH
http://www.hmgforum.com.br

martingz
Posts: 274
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico
Has thanked: 20 times
Been thanked: 13 times

Post by martingz » Sat May 11, 2019 1:39 am

Salinetas tengo un programa que genera la base de datos, despues de eso crea las tablas y las llena desde DBF, esta base de datos se sube a un telefono android que sirve para tomas las lecturas de nuestros usuarios, si te interesa subo el codigo



saludos

Post Reply