SA-MP Forums Archive
[Tutorial] SQLite - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+----- Forum: Lanzamientos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=59)
+----- Thread: [Tutorial] SQLite (/showthread.php?tid=578025)



SQLite - [DOG]irinel1996 - 16.06.2015

SQLite
[*] Introducciуn
Buenas, decidн hacer este tutorial para que tengan una referencia a la hora de implementar SQL en vuestro servidor, o para que se planteen si realmente es necesario implementarlo. Menciono que no explicarй cуmo usar el lenguaje SQL, pero sн intentarй hacer una pequeсa guнa para poder hacer operativa nuestra base de datos.

Antes de todo, tenemos que aclarar algunas dudas a las personas que no saben nada sobre las bases de datos y el SQL.


[*] їDe quй estamos hablando?
Seguramente mбs de uno tendrб en su carpeta scriptfiles decenas de archivos en donde se guardan datos relativos a los usuarios, a los sistemas de casas de vuestro servidor, o de los coches, de lo que sea. Imaginaros un servidor con mil usuarios, tendrнamos mil archivos independientes, y manipularlos uno por uno se convertirнa en una tarea muy pesada.

Podrнamos evitarnos todo esto usando una base de datos, un solo archivo para todo nuestro servidor, y actuarнamos con el rбpidamente mediante ciertas instrucciones que le mandamos a travйs del lenguaje SQL.


[*] Diferencias entre SQLite y MySQL
Seguramente habrбn oнdo hablar del famoso MySQL, pues bien, MySQL es un sistema de gestiуn de bases de datos. La caracterнstica principal de este sistema es que es independiente a la aplicaciуn que requiere de йl, esto significa que se requiere una conexiуn remota entre la aplicaciуn y la base de datos.

En cambio, SQLite es un sistema que viene incluido en el SA-MP desde la versiуn 0.2.2 de йste, es una base de datos local y se almacena en el mismo host que el SA-MP Server. Debido a lo anterior, usar una base de datos mediante SQLite se convierte en algo mucho mбs sencillo que usar MySQL ya que no ha de haber ninguna conexiуn a travйs de la red de por medio.

La base de datos SQLite se almacena en el propio scriptfiles, el MySQL podrнa estar en el mismo host que el servidor SA-MP, pero aun asн tendrнamos que establecer una conexiуn a travйs de la red.


[*] їCuбndo usar cada cual?
Lo cierto es que existen mбs sistemas de gestiуn de bases de datos pero el MySQL es uno de lo mбs conocidos debido a su sencillez, se puede usar en una infinidad de cosas ajenas al SA-MP, como en una red social, en una empresa que guarda ciertos datos, etc.

El php estб muy preparado para trabajar con el MySQL, igual que el SA-MP con el SQLite. El SQLite en el caso del SA-MP tiene una cantidad de funciones que son propias del SA-MP, es decir, conectar una pбgina web a una base de datos SQLite creada por SA-MP serнa algo muy complicado. Por esto, es preferible usar MySQL si vas a diseсar una pбgina web que actъa con el servidor y los datos de йste ya que con el php todo serб muy sencillo. En este caso la base de datos serб algo independiente al SA-MP y a la pбgina web, pero cada aplicaciуn accede a ella mediante una conexiуn independiente y ejecuta lo que dictemos.

Si no vas a tener una pбgina web que requiera de los datos de la base de datos, es recomendable usar SQLite. En este caso, solamente la usarб el SA-MP de manera local.


[*] Crear una base de datos SQLite
Crear una base de datos SQLite es muy sencillo, hay que saber que las variables relacionadas a las bases de datos (en PAWN) llevan un etiqueta del tipo DB (database) y que la extensiуn de nuestra base de datos serб del tipo .db.
Con esto ya podrнamos crear y abrir nuestra primera base de datos, pero estarнa totalmente vacнa, ahн es donde entra en juego SQL.


[*] Estructura de la base de datos
Una base de datos tiene una estructura muy sencilla, estб formada por tablas y estas a su vez contienen filas y columnas, como si se tratara de un documento de Microsoft Excel. Cada columna tiene un nombre y estб definida para almacenar datos de un tipo determinado (texto, nъmeros, etc.), cada registro que se almacena en una tabla darб lugar a una fila. Ejemplo de contenido de una tabla:

idUsuarionombreUsuarioemailUsuario
0Irinelnotavailable@gmail.com
1Otaconnoleemisnotas@gmail.com
Se puede observar que en la tabla anterior existen tres columnas: idUsuario, nombreUsuario, emailUsuario. Tamiйn vemos que existen dos registros en dicha tabla (cada usuario tiene una ID, un nombre y un email), cada registro de datos es una fila, el usuario con la ID 1 se encuentra en la fila 2.

Visto esto, es obvio que en el caso del SA-MP necesitaremos varias tablas para los distintos sistemas del gamemode, por ejemplo: usuarios, vehнculos, casas, etc. Cada tabla tendrнa unas columnas especificas y un contenido relativo a ellas distribuido en filas.

Para almacenar los datos de los usuarios que se van a registrar, primero tenemos que crear la tabla en nuestra base de datos (inicialmente vacнa) y definir las columnas para indicar quй cosa vamos a almacenar, esto lo podemos hacer mandando una consulta SQL a la base de datos.

Para mandar una consulta se usa la siguiente funciуn: Para eliminar el resultado y liberar la memoria se usa la siguiente funciуn:
Para crear la tabla que hemos visto anteriormente, enviamos esta consulta una vez tengamos la base de datos abierta/creada:
pawn Код:
new DB:midb; /* Variable para almacenar el valor identificador de la base de datos. */

public OnGameModeInit() {
    midb = db_open("datos.db"); /* Abrimos/creamos la base de datos. */

    if (midb) /* Verificamos que el valor identificador de la base de datos es vбlido. */
    {
        new DBResult:resultado; /*Variable para almacenar el valor identificador del resultado. */

        resultado = db_query(midb, "CREATE TABLE IF NOT EXISTS usuarios (idUsuario INTEGER PRIMARY KEY AUTOINCREMENT, nombreUsuario TEXT, emailUsuario TEXT)"); /* Ejecutamos la consulta SQL y almacenamos el valor identificador del resultado. */
   
        db_free_result(resultado); /* Liberamos el resultado, aunque no le hemos dado ningъn uso, ya que no es necesario. */

    }
    return 1;
}

public OnGameModeExit()
{
    db_close(midb); /* Cerramos la base de datos. */
    return 1;
}

[HE PUBLICADO POR ERROR Y ESTOY MODIFICANDO/AСADIENDO CIERTAS COSAS QUE CONSIDERO IMPORTANTES, POR FAVOR, NO COMENTEN SI ESTБN LEYENDO ESTA NOTA YA QUE EL TUTORIAL ESTБ INCOMPLETO. ЎGRACIAS!]



Respuesta: SQLite - OTACON - 16.06.2015

gracias, excelente tutorial.
saludos.



Respuesta: SQLite - FelipeAndres - 16.06.2015

Excelente


Respuesta: SQLite - Johansitho - 16.06.2015

Muy buen tutorial, Pero preferiblemente con base a lo que explicaste es mejor usar el MySql.


Respuesta: SQLite - Darken3 - 16.06.2015

Buen tutorial.Gracias por el aporte


Respuesta: SQLite - AndreLuiz - 21.06.2015

Gracias.