|
|
|
|
- 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
Acceso a una base de datos en modo local (SQLite)
Disponible solo con este tipo de conexió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: - 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")
- 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:
| | SQLChangeConnection | Modifica la conexión actual. | SQLClose | Declara el final de la ejecución de la consulta y libera los recursos de memoria asignados durante la ejecución de la consulta. | SQLColumn | Devuelve las características de todas las columnas (o posiciones):- para una determinada tabla.
- para una consulta determinada.
| SQLConnect | Conecta la aplicación actual a una base de datos que debe ser interrogada mediante SQL. | SQLDisconnect | Cierra la conexión actual y libera la memoria utilizada por la conexión. | SQLExec | Nombra y ejecuta una consulta SQL. | SQLFetch | Va al siguiente fila (es decir, al siguiente Record) del resultado de la consulta. | SQLGetCol | Recupera el contenido de la columna especificada del resultado de la consulta, para la actual Line. | SQLInfo | Inicializa las diferentes variables SQL con información relativa a la última consulta ejecutada. | SQLReqExists | Verifica 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: - 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")
- 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.. - 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: - 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
- Recuperar esta lista en el código del navegador:
// Retrieves the list sList = AJAXExecute(GetRec)
- 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: - 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)
- 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|