Foro

Home Forums Programación SQL No puedo hacerlo funcionar a SQLite !!!!

This topic contains 14 replies, has 4 voices, and was last updated by  Estebangs 2 años, 8 meses .

Viendo 15 respuestas - de la 1 a 15 (de 15 en total)
  • No puedo hacerlo funcionar a SQLite !!!!

    Intervenciones
  • Estebangs 
    Participant

    Hola foro, me estoy volveindo loco, no puedo hacer andar el plugin cordova-sqlite-storage, ya he probado en un proyecto con y sin templates. No pasa nada, me da error siempre.

    Es super sencillo, creo una base de datos con “Valentina Studio 6″ o con el addon de Firefox y nada… necesito que la base tenga datos precargados (cerca de 4000 líneas).

     Code: Index.html (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.
    20.
    21.
    22.
    23.
    24.
    25.
    26.
    27.
    28.
    29.
    30.
    31.
    32.
    33.
    34.
    35.
    36.
    37.
    38.
    39.
    40.
    41.
    42.
    43.
    44.
    45.
    46.
    47.
    48.
    49.
    50.
    51.
    52.
    53.
    54.
    55.
    56.
    57.
    58.
    59.
    60.
    61.
    62.

    <!DOCTYPE html>
    <!--
        Copyright (c) 2012-2016 Adobe Systems Incorporated. All rights reserved.

        Licensed to the Apache Software Foundation (ASF) under one
        or more contributor license agreements.  See the NOTICE file
        distributed with this work for additional information
        regarding copyright ownership.  The ASF licenses this file
        to you under the Apache License, Version 2.0 (the
        "License"); you may not use this file except in compliance
        with the License.  You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

        Unless required by applicable law or agreed to in writing,
        software distributed under the License is distributed on an
        "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
         KIND, either express or implied.  See the License for the
        specific language governing permissions and limitations
        under the License.
    -->
    <html>

    <head>
        <meta charset="utf-8" />
        <meta name="format-detection" content="telephone=no" />
        <meta name="msapplication-tap-highlight" content="no" />
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
        <!-- This is a wide open CSP declaration. To lock this down for production, see below. -->
        <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *" />
        <!-- Good default declaration:
        * gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
        * https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
        * Disables use of eval() and inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
            * Enable inline JS: add 'unsafe-inline' to default-src
            * Enable eval(): add 'unsafe-eval' to default-src
        * Create your own at http://cspisawesome.com
        -->
        <!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: 'unsafe-inline' https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *" /> -->

        <link rel="stylesheet" type="text/css" href="css/index.css" />
        <title>Hello World</title>
    </head>

    <body>
        <div>
            <h1>PhoneGap</h1>
            <div id="deviceready">
                <p class="event listening">Connecting to Device</p>
                <p class="event received">Device is Ready</p>
            </div>
            <div id="rowCount">conteo</div>
            <div id="TableData">datos</div>
        </div>
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
        <script type="text/javascript">
            app.initialize();
        </script>
    </body>

    </html>

     Code: index.js (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.
    20.
    21.
    22.
    23.
    24.
    25.
    26.
    27.
    28.
    29.
    30.
    31.
    32.
    33.
    34.
    35.
    36.
    37.
    38.
    39.
    40.
    41.
    42.
    43.
    44.
    45.
    46.
    47.
    48.
    49.
    50.
    51.
    52.
    53.
    54.
    55.
    56.
    57.
    58.
    59.
    60.
    61.
    62.
    63.
    64.
    65.
    66.
    67.
    68.

    /*
    * Licensed to the Apache Software Foundation (ASF) under one
    * or more contributor license agreements.  See the NOTICE file
    * distributed with this work for additional information
    * regarding copyright ownership.  The ASF licenses this file
    * to you under the Apache License, Version 2.0 (the
    * "License"); you may not use this file except in compliance
    * with the License.  You may obtain a copy of the License at
    *
    * http://www.apache.org/licenses/LICENSE-2.0
    *
    * Unless required by applicable law or agreed to in writing,
    * software distributed under the License is distributed on an
    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    * KIND, either express or implied.  See the License for the
    * specific language governing permissions and limitations
    * under the License.
    */
    var app = {
        // Application Constructor
        initialize: function() {
            this.bindEvents();
        },
        // Bind Event Listeners
        //
        // Bind any events that are required on startup. Common events are:
        // 'load', 'deviceready', 'offline', and 'online'.
        bindEvents: function() {
            document.addEventListener('deviceready', this.onDeviceReady, false);
        },
        // deviceready Event Handler
        //
        // The scope of 'this' is the event. In order to call the 'receivedEvent'
        // function, we must explicitly call 'app.receivedEvent(...);'
        onDeviceReady: function() {
            app.receivedEvent('deviceready');



            var db = sqlitePlugin.openDatabase({name: 'test.db', location: 2});
            db.transaction(function(transaction) {
            transaction.executeSql('SELECT * FROM artics', [], function (tx, results)
                {
                    console.log("Antro a la transaccion");
                    var len = results.rows.length, i;
                    $$("#rowCount").append(len);
                    for (i = 0; i < len; i++){
                        $$("#TableData").append("<tr><td>"+results.rows.item(i).cod+"</td><td>"+results.rows.item(i).descrip+"</td><td>"+results.rows.item(i).precio+"</td></tr>");
                    }
                }, null);
            });




        },
        // Update DOM on a Received Event
        receivedEvent: function(id) {
            var parentElement = document.getElementById(id);
            var listeningElement = parentElement.querySelector('.listening');
            var receivedElement = parentElement.querySelector('.received');

            listeningElement.setAttribute('style', 'display:none;');
            receivedElement.setAttribute('style', 'display:block;');

            console.log('Received Event: ' + id);
        }
    };

    Me da error que no puede abrir la base de datos.

    me tira lo siguiente como error.

    Received Event: deviceready
    SQLitePlugin.js:174 OPEN database: test.db
    SQLitePlugin.js:195 OPEN database: test.db failed, aborting any pending transactions
    SQLitePlugin.js:82 Could not open database
    SQLitePlugin.js:114 Uncaught TypeError: error is not a function

    Desde ya muchas gracias.


    Estebangs 
    Participant

    Alguien que me pueda dar una mano…. he leido más y pareciera que no hay solucion para la ultima version de phonegap y apache cordova. Alguns usa WebSQL pero W3C lo descartó e indexedDB no me convence ya que no es leng SQL. Agradezco cualquier ayuda (Phonegap v6.0)


    tekofer
    tekofer 
    Participant

    Buenas Noches,

    Estebangs, puedes compartir la bd que estas utilizando para ver si te puedo dar una mano?
    La base de datos estara en una ruta? en cual? o se puede precargar cuando inicia la app? Explicanos puntualmente lo que quieres; porque la verdad lo que te entiendo es que quieres una base que estara ya en la app y tiene registros cargados.

    Puedes enviarme la bd a tekofer@gmail.com

    Saludos,
    tekofer


    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Hola a todos,

    Es posible que el problema pueda ser o por permisos del archivo de la DB, o por no estar bien ubicado. De todos modos como dice tekofer, a ver si nos puedes compartir la db, y una captura de pantalla de la ramificación de archivos de tu proyecto, a ver si damos con el problema :)

    En el caso de que con SQLite no te funcione correctamente yo revisaría una websql, son fáciles de usar y te puede solucionar el tema.

    Saludos!


    Estebangs 
    Participant

    Gracias por contestar, puede ser un tema de permisos, no mire por ese lado. El error tambien me da con WebSQL, puedo crear una BD en memoria pero no queda en disco y no puedo listar el contenido de la creada en SQLite.

    La BD usada con el plugin de Brody esta hubicada en 2 lugares, he probado desde ambos lados, en www y en www/db/ (del proyecto, no del plugin).

    Paso por mail la base de datos por que no puedo subir aqui.

    Desde ya gracias!!!!


    Estebangs 
    Participant

    tekofer, te he enviado por mail la BD con varios registros.


    Estebangs 
    Participant

    Este es el arbol del www

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.
    20.
    21.
    22.
    23.
    24.
    25.
    26.
    27.
    28.
    29.
    30.
    31.
    32.
    33.
    34.
    35.
    36.
    37.
    38.
    39.
    40.
    41.
    42.
    43.
    44.
    45.
    46.
    47.
    48.
    49.
    50.
    51.
    52.
    53.
    54.
    55.
    56.
    57.
    58.
    59.
    60.
    61.
    62.
    63.
    64.
    65.
    66.
    67.
    68.

    Directorio de D:\Trabajo\SistemasMobiles\test\www

    21/04/2016  10:02    <DIR>          .
    21/04/2016  10:02    <DIR>          ..
    14/04/2016  20:12    <DIR>          css
    15/04/2016  20:47    <DIR>          db
    21/04/2016  10:02                 0 direct.txt
    14/04/2016  20:12    <DIR>          img
    14/04/2016  20:42             2,810 index.html
    14/04/2016  20:12    <DIR>          js
    14/04/2016  20:12    <DIR>          spec
    14/04/2016  20:12             2,532 spec.html
    14/04/2016  17:05           416,768 test.db
                   4 archivos        422,110 bytes

    Directorio de D:\Trabajo\SistemasMobiles\test\www\css

    14/04/2016  20:12    <DIR>          .
    14/04/2016  20:12    <DIR>          ..
    14/04/2016  20:12             3,719 index.css
                   1 archivos          3,719 bytes

    Directorio de D:\Trabajo\SistemasMobiles\test\www\db

    15/04/2016  20:47    <DIR>          .
    15/04/2016  20:47    <DIR>          ..
    14/04/2016  17:05           416,768 test.db
                   1 archivos        416,768 bytes

    Directorio de D:\Trabajo\SistemasMobiles\test\www\img

    14/04/2016  20:12    <DIR>          .
    14/04/2016  20:12    <DIR>          ..
    14/04/2016  20:12            29,632 logo.png
                   1 archivos         29,632 bytes

    Directorio de D:\Trabajo\SistemasMobiles\test\www\js

    14/04/2016  20:12    <DIR>          .
    14/04/2016  20:12    <DIR>          ..
    21/04/2016  09:59             4,278 index.js
                   1 archivos          4,278 bytes

    Directorio de D:\Trabajo\SistemasMobiles\test\www\spec

    14/04/2016  20:12    <DIR>          .
    14/04/2016  20:12    <DIR>          ..
    14/04/2016  20:12             1,264 helper.js
    14/04/2016  20:12             2,604 index.js
    14/04/2016  20:12    <DIR>          lib
                   2 archivos          3,868 bytes

    Directorio de D:\Trabajo\SistemasMobiles\test\www\spec\lib

    14/04/2016  20:12    <DIR>          .
    14/04/2016  20:12    <DIR>          ..
    14/04/2016  20:12    <DIR>          jasmine-1.2.0
                   0 archivos              0 bytes

    Directorio de D:\Trabajo\SistemasMobiles\test\www\spec\lib\jasmine-1.2.0

    14/04/2016  20:12    <DIR>          .
    14/04/2016  20:12    <DIR>          ..
    14/04/2016  20:12            19,065 jasmine-html.js
    14/04/2016  20:12             6,444 jasmine.css
    14/04/2016  20:12            68,641 jasmine.js
    14/04/2016  20:12             1,061 MIT.LICENSE
                   4 archivos         95,211 bytes


    Estebangs 
    Participant

    Cuando uso WEBSql me da este error

    Query failed: could not prepare statement (1 no such table: artics)


    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Lo primero que probaría es a poner el archivo .db en la raíz de www.

    Por otro lado me gustaría que probaras a implementar este código a ver si te da error:

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.

    var db;
    var app = {
        initialize: function() {
            this.bindEvents();
        },
        bindEvents: function() {
            document.addEventListener('deviceready', this.onDeviceReady, false);
        },
        onDeviceReady: function() {
            app.receivedEvent('deviceready');
            db = openDatabase('dbapp', '1.0', 'DB App', 2 * 1024 * 1024, function() {
                console.log('db successfully opened or created');
            });
        },
        receivedEvent: function(id) {}
    };

    Ya nos cuentas :)


    Estebangs 
    Participant

    No me da error ese cod :(

    1.  (index):106 db successfully opened or created

    • This reply was modified 3 años, 10 meses by  Estebangs.

    • This reply was modified 3 años, 10 meses by  Estebangs.
    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Todo lo contrario, ese es el mensaje de consola que debe aparecer si la base de datos ha sido creada o abierta correctamente -> “db successfully opened or created”.

    Saludos


    Estebangs 
    Participant

    Ahora estoy más perdido. Por las dudas eliminé todo el proyecto y estoy creando un hello world de cero para testear el plugin, no sé que puede estar andando mal.


    Estebangs 
    Participant

    Bueno, he podido hacerlo funcionar.! :)
    Mi idea en un comienzo era utilizar bases de datos creadas en el ordenador y subirlas junto a la aplicación al móvil. ERROR…. No he podido hacerlo con ningún plugin que utilice SQL como método de consulta.
    He solucionado, escribiendo un js que se encargue de:
    – Crear la o las Bases de Datos directamente en el móvil (vacías)
    (Tablas, campos y demas al mismo tiempo)

    – Popular o llenar las bases con datos desde una Web o bien a mano con INSERT (Solo prueba, ya que son más de 4000 registros los que debo manejar.

    - Problema, persistencia de datos… NINGUNO por lo menos con Framework7 (mirando de curioso) y SQLite-2. Voy a probar con Brody y si no funciona pongo el resultado. Brody tiene un versión del plugin que no es core sino ext, que en teoría funciona para basea pre cargadas, YO no tuve suerte… no funcionó y con el mismo error que la versión core.

    Agradezco la ayuda y cualquier contribución que pueda hacer desde mi poca experiencia será con gusto.

    • This reply was modified 3 años, 10 meses by  Estebangs.

    • This reply was modified 3 años, 10 meses by  Estebangs.
    andrwsv 
    Participant

    hola , yo estoy tratando de hacer una app simple con phonegap , jquery mobile , tengo un formulario donde quiero guardar unos campos he tratado de hacerlo con sqlite y no me ha funcionado, dentro de my proyecto inclui el archivo SQLitePlugin.js para crear la bd y hacer una insercion y no me funciona.

    prove el codigo de Jose Jesus Perez Rivas y no me saca error pero tampoco me saca el mensaje de creacion de bd, yo lo estoy haciendo en windows 10 .


    Estebangs 
    Participant

    Si podés, pasame el código de creacion e insercion, despues lo miro y te comparto el mio para que veas.
    En este momento estoy trabajando con 4 bases de datos, una con 3 tablas, 2 de las base con 10500 registros y otra con 8000 y funciona que es un lujo. Tambien consumiendo servicios desde servidor externo hechos a mi manera en JSON con Laravel 5. Espero poder ayudarte. Pasame (cambiando nombres o campos si queres) lo cod de creacion, apertura y guardado.


Viendo 15 respuestas - de la 1 a 15 (de 15 en total)

You must be logged in to reply to this topic.

RT @PhoneGapBuild: Apache Cordova CLI-9.0.0 has been added to PhoneGap Build! This version uses Android 9.0 (API level 28) by default Re…09:41 AM Feb 19th