Gustavo Sied > Sin categoría > SQLite en el Caso
SQLite en el Caso
Gustavo
1 febrero, 2014
/ * <[CDATA [* / var asciidoc = {/ / Namespace!. / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / Indice generador / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / * Autor: Mihai Bazon , septiembre de 2002 * http://students.infoiasi.ro/ ~ mishoo ** Tabla de generador de contenido * Versión: 0.4 ** Siéntase libre de utilizar esta secuencia de comandos en los términos de la GNU General Public License *, siempre y cuando lo hace no suprimir o alterar este aviso. * / / * Modificado por Troy D. Hanson, septiembre de 2006. Licencia: GPL * / / * modificado por Stuart Rackham, 2006, 2009. Licencia: GPL * / / / toclevels = 1 .. 4. toc: function (toclevels) {function getText (el) {var text = ""; for (var i = el.firstChild; i = null; i = i.nextSibling!) {if (== i.nodeType 3 / * Node.TEXT_NODE * /) / / IE no habla constantes. texto + = I.Data; else if (i.firstChild = null!) Texto + = getText (i);} texto return;} function TocEntry (el, texto, toclevel) {this.element = el; this.Text = texto; this.toclevel = toclevel;} tocEntries función (EL, toclevels) {var result = new Array; var re = new RegExp ('[HH] ([1 -' + (toclevels 1) + '])') / / Función que escanea el árbol DOM para elementos de encabezado (la API DOM2 / / NodeIterator sería una mejor técnica, pero no con el apoyo de todos / / los navegadores). iterate var = function (el) {for (var i = el.firstChild;! i = null; i = i.nextSibling) {if (== i.nodeType 1 / * Node.ELEMENT_NODE * /) {var = mo re . exec (i.tagName); if (mo && (i.getAttribute ("clase") | | i.getAttribute ("className")) = "float"!) {resultado [result.length] = new TocEntry (i , getText (i), mo [1] -1);} iteración (i);}}} iterate (el); return resultado;} var toc = document.getElementById ("toc"); if (toc) {! vuelta;} / / Eliminar entradas de la TDC existentes en caso de que estamos volviendo a cargar el TOC. var tocEntriesToRemove = []; var i; for (i = 0; i
«; var id = palmos [i] getAttribute («id»);. if (id = nulos!) refs [«#» + id] = n;}} si (n == 0) noteholder.parentNode.removeChild (Bonista); else {/ / Proceso footnoterefs. for (i = 0; i
Es muy común en las bases de datos SQLite para números enteros para representar un significado más profundo que su valor numérico. Solemos referirnos a esto como una bandera. Tome la call_history.db iOS por ejemplo: la llamada class=»monospaced»> tabla tiene una columna llamada literalmente y los números enteros en esa columna representa el tipo de llamada.
Entero |
Interpretación |
4
|
entrante
|
5
|
saliente
|
8
|
class=»tableblock»>
|
16 |
Facetime
|
|
Más valores son posibles que los de la tabla anterior. Los datos anteriores son precisos para iOS 6, pero no completa. Otros valores enteros son posibles que representan un error de red de algún tiempo, y si bien es posible determinar si la llamada era entrante, Facetime, etc, cuando se produjo el error, esto excede el alcance de este post. |
tan comunes como las banderas de enteros es la absoluta falta de una explicación para ellos en la propia base de datos. Echa un vistazo a los esquemas de tablas:
<- Generador: GNU fuente-highlight 3.1.6 por Lorenzo Bettini http: / / www.lorenzobettini.it http://www.gnu.org/software/src-highlite ->
Crear MESA _SqliteDatabaseProperties ( clave texto , TEXTO , ÚNICO ( clave ));
CREAR MESA #0000FF"> style="color: ( ROWID INTEGER PRIMARIA CLAVE , TEXTO , fecha , Duración INTEGER , , nombre texto , TEXTO , TEXTO , leer , asistida INTEGER , BLOB , originalAddress texto );
Crear MESA ( ROWID INTEGER PRIMARIA CLAVE , , bytes_rcvd Real , , , bytes_last_sent , , );
Las mesas están esencialmente están solos-los datos class=»monospaced»> tabla no se unió a la llamada class=»monospaced»> Mesa para dar sentido a las banderas class=»monospaced»> enteros columna. Así que, ¿cómo determinar el significado? ¿Por qué, por medio de pruebas, por supuesto. Si pensabas utilizar otra herramienta y ver lo que , dice a continuación, salir a la calle y arrastrar sus nudillos en el concreto por un poco. Está bien, voy a esperar ….
El mejor recurso para el control de los valores de la bandera es la interfaz de usuario del dispositivo: conseguir un teléfono de prueba, exportar la base de datos, y comparar los registros mostrados a través de la interfaz de dispositivo a los valores de la tabla. Sí, usted tiene que hacer algo de trabajo, pero eso es como debe ser. Como mínimo, es necesario comprobar si la herramienta o consulta el manual es corret, ¿verdad? Por cierto, puede que se pregunte cómo la interfaz de usuario conoce la interpretación: la de la programación de aplicaciones, pero no llega a ver que debido a su
la expresión CASE
CASE es la expresión de las consultas IF / THEN SQL. La forma básica de la expresión es el siguiente (crédito : sqlite.org ):
- CASO x CUANDO ENTONCES w1 w2 r1 CUANDO ENTONCES ELSE r2 r3 END
- CASO CUANDO x = w1 entonces R1 cuando x = w2 ENTONCES ELSE r2 r3 END
Piense en el x de valor en las expresiones anteriores como el nombre de la columna. En lugar de tratar de explicar con más detalle con valores hipotéticos, permite dar marcha atrás a las banderas call_history.db. Podríamos utilizar el siguiente extracto de nuestra consulta:
<- Generador: GNU fuente-highlight 3.1.6 por Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite ->
banderas de casos
cuando 4 "Incoming"
5 y "saliente"
8 "Bloqueado "
16 " Facetime "
demás "Abandonado"
como flags
|
Usamos el class=»monospaced»> alias en la final de la instrucción caso anterior a nombre de la columna de «banderas». Sin el alias, la columna tomaría el nombre de toda la declaración de caso |
La declaración caso anterior esencialmente lee.: para la columna banderas, interpretar 4 como entrante , 5 como saliente , 8 como Bloqueado , 16 como Facetime , y cualquier otra cosa que disminuyen . Si estuviéramos interesados en el resultado de la producción de call_history.db que incluía el rowid, número de teléfono, fecha, duración de la llamada, y el tipo de llamada, podríamos utilizar la siguiente consulta:
<- Generador: GNU fuente-highlight 3.1.6 por Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src- highlite ->
seleccione
rowid ,
,
datetime ( fecha , 'unixepoch' , 'localtime' ) como fecha ,
, banderas de casos />
4 "Incoming"
5 "saliente"
cuando 8 "Bloqueado"
16 "Facetime"
final "Abandonado" como /> de llamada
Nuestra producción se vería como la siguiente: