AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Administrar bases de datos / Funciones SQL
  • Presentación
  • ¿Cómo administrar una base de datos local?
  • Funciones SQL disponibles
  • Ejemplo: Grabación local de los datos de un centro offline
  • Etapas
  • Recuperación de los registros encontrados en la base de datos remota
  • Recuperación de los datos locales para actualizar la base de datos remota
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Acceso a una base de datos en modo local (SQLite)
Conectores NativosDisponible solo con este tipo de conexión
Presentación
WEBDEV permite a un sitio crear y acceder a una base de datos creada por el navegador en el equipo del usuario de la Web en código de navegador.
Esta característica le da la capacidad de introducir datos en modo desconectado y de transmitirlos al servidor tan pronto como se restaure la conexión con INTERNET..
Atención: Esta función sólo está disponible para algunos navegadores:
  • Cromo,
  • Safari,
  • Opera 11, ...
¿Cómo administrar una base de datos local?
Para administrar una base de datos local:
  1. Utilice SQLConnect en el código del navegador para conectarse a la base de datos local. Por ejemplo:
    // Connection to a browser database named "LocalDatabase"
    // The database is created if it does not exist
    SQLConnect("LocalDatabase", "", "", "", "Web SQL database")
  2. Utilice SQLExec para ejecutar consultas en la base de datos local.
    Atención: Las consultas SQL se ejecutan de forma asíncrona. Por lo tanto, la sintaxis de SQLExec utiliza un Procedure específico. Este Procedure se inicia al final de la ejecución de la consulta real (independientemente del resultado de la consulta). Este navegador Procedure se utiliza para:
    • comprobar la correcta ejecución de la consulta. SQLInfo se ejecuta automáticamente durante la llamada a Procedure. Por lo tanto, todas las variables SQL están posicionadas. Si se produce un error, el error SQL será distinto de "00000".. El mensaje de error es devuelto por el SQL.MesError Variable.
    • navegar por el resultado de la consulta.
    Si se ejecutan nuevas consultas en este Procedure (para añadir registros por ejemplo), se puede:
    • usan la misma Procedure: el parámetro de este Procedure se utiliza para averiguar la consulta que se está ejecutando actualmente.
    • usar un navegador diferente Procedure para probar el resultado de estas nuevas consultas.
Observaciones:
  • Durante la salida del navegador Procedure, se restauran los valores devueltos por SQLInfo. Si estos valores han sido modificados en el navegador Procedure, se sobrescriben.
  • Para conocer los comandos SQL que se pueden utilizar, consulte la documentación sobre las "Bases de datos Web SQL"..

Funciones SQL disponibles

Las siguientes funciones SQL están disponibles en el código del navegador:
SQLChangeConnectionModifica la conexión actual.
SQLCloseDeclara el final de la ejecución de la consulta y libera los recursos de memoria asignados durante la ejecución de la consulta.
SQLColumnDevuelve las características de todas las columnas (o posiciones):
  • para una determinada tabla.
  • para una consulta determinada.
SQLConnectConecta la aplicación actual a una base de datos que debe ser interrogada mediante SQL.
SQLDisconnectCierra la conexión actual y libera la memoria utilizada por la conexión.
SQLExecNombra y ejecuta una consulta SQL.
SQLFetchVa al siguiente fila (es decir, al siguiente Record) del resultado de la consulta.
SQLGetColRecupera el contenido de la columna especificada del resultado de la consulta, para la actual Line.
SQLInfoInicializa las diferentes variables SQL con información relativa a la última consulta ejecutada.
SQLReqExistsVerifica la existencia de una consulta.
Ejemplo: Grabación local de los datos de un centro offline
WEBDEV le permite implementar sitios fuera de línea. Si este tipo de sitio debe guardar datos durante el período de desconexión, puede utilizar una base de datos local..

Etapas

Los pasos son los siguientes:
  1. Conexión a la base de datos
    La conexión a la base de datos se establece con SQLConnect. Por ejemplo:
    SQLConnect("","","", "APTCustomers", "Web SQL database")
  2. Creación de la base de datos local
    La base de datos local debe crearse antes de que se pueda utilizar.. Para ello, todo lo que tiene que hacer es utilizar una consulta CREAR TABLA. Esta consulta debe ser realizada por SQLExec. Por ejemplo:
    sQuery is string
    // Code for creating the table
    sQuery = [
    CREATE TABLE IF NOT EXISTS "Appointments"
    ("AppointmentID"  INTEGER PRIMARY KEY , "StartDateTime" VARCHAR(16) ,
    "Customer" VARCHAR(100) , "Address" VARCHAR(200) , "Summary" LONGVARCHAR );
    ]
    // Execute query
    SQLExec(sQuery, "QRY_CREATION", _cbQuery)

    Cuando la consulta "QRY_CREATION" se completa, se ejecuta el _cbQuery Procedure.
    En este ejemplo, este procedimiento se utiliza para gestionar todas las consultas ejecutadas y para realizar una Process adecuada después de la consulta.
    La consulta de creación debe utilizarse una vez, al principio del día, por ejemplo. Por ejemplo, la base de datos sólo se puede crear si no se pasa un parámetro específico (por ejemplo,"First") a las páginas..
  3. Acceso a los datos locales o remotos
    En este ejemplo, el sitio puede ser utilizado en modo online o en modo offline. Debe poder acceder a la base de datos local (en modo offline) o a la base de datos remota (en modo online)..
    Todos los accesos (creación, modificación, eliminación, ...) a la base de datos local deben realizarse a través del SQLExec Procedure.
    Los accesos a la base de datos remota siempre se pueden realizar a través de las funciones Hxxx. Sin embargo, usted debe:
    • ejecutar estas funciones en un código de navegador, por lo tanto en AJAX, a través de AJAXExecute.
    • asegúrese de que el navegador está conectado (NavegadorIsConnectado).
    Por ejemplo:
    sQuery is string
    // The browser is connected
    IF BrowserIsConnected() = True THEN
    // Saves in the remote database (server)
    AJAXExecute(SaveData, EDT_ID, EDT_SUMMARY)
    END
    sQuery = [
    UPDATE Appointment
    SET Summary='%2'
    where AppointmentID=%1
    ]
     
    // In any case, save in the local database
    SQLExec(StringBuild(sQuery, gnBrwAPTID, EDT_SUMMARY), "QRY_BACKUP", _cbQuery)

Recuperación de los registros encontrados en la base de datos remota

Para recuperar registros de la base de datos remota (servidor) en la base de datos local (para inicializarla, por ejemplo), debe:
  1. Lee los registros y almacena los elementos como cadenas, en un servidor Procedure.
    PROCEDURE GetRec()
    FOR EACH MyFile1
    sList += [CR]+ MyFile1.Item1 + TAB + ...
    MyFile1.Item2 + TAB + MyFile1.Item3
    END
    RESULT sList
  2. Recuperar esta lista en el código del navegador:
    // Retrieves the list
    sList = AJAXExecute(GetRec)
  3. Examinar la cadena y extraer la información con ExtractString. Por lo tanto, los registros se pueden añadir fácilmente con una consulta de adición (INSERT)..

Recuperación de los datos locales para actualizar la base de datos remota

Del mismo modo, los datos pueden recuperarse de la base de datos local para actualizar la base de datos remota.. Para ello:
  1. Ejecute una consulta localmente para recuperar los registros. Por ejemplo, para recuperar las citas del día:
    // Runs the query that selects the appointments of the day
    sQuery is string
    sQuery = StringBuild("SELECT AppointmentID,Summary FROM APPOINTMENT " + ...
    "WHERE StartDateTime LIKE '%1%' ORDER BY StartDateTime ASC;", Today())
    // Starts the query
    SQLExec(sQuery, "QRY_SYNCHRONIZEAPT", _cbQuery)
  2. En la comprobación Procedure iniciada por SQLExec, basta con ejecutar un Procedure para actualizar la base de datos remota a través de AjaxExecute. En nuestro ejemplo, se inicia el navegador Procedure llamado __SynchonizeDatabase:
    PROCEDURE _SynchronizeDatabase(sQuery)
     
    // As long as there are appointments to synchronize
    WHILE SQLFetch(sQuery) = 0
    // Synchronizes the appointment
    AJAXExecute(_SynchronizeARemoteAppointment, SQLGetCol(sQuery, 1), SQLGetCol(sQuery, 2))
    END
    Observación: La actualización de la base de datos remota puede ser provocada durante la reconexión al servidor.. Durante la reconexión al servidor, se ejecuta el Event "Cambiar al modo en línea".. Esta Process es una Process opcional de la Page.
Para visualizarlo en el editor de código, debe:
  • Visualizar el código de la Page.
  • Haga clic en "Añadir otros Event s a xxx", en la parte inferior de la ventana de códigos, debajo del último Event.
    Aparecen todos los Event s opcionales disponibles para el Page.
  • Seleccione el "Cambiar a modo en línea" Event.
  • Valide.
  • Introduzca el código para actualizar la base de datos remota.
Versión mínima requerida
  • Versión 16
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/01/2023

Señalar un error o enviar una sugerencia | Ayuda local