HTML - Transacciones BD Navegador Programacion Web

 
Vista:
sin imagen de perfil

Transacciones BD Navegador Programacion Web

Publicado por Victor (22 intervenciones) el 14/05/2018 12:22:12
Buenas tardes.

Estoy siguiendo un manual y estoy atascado con esto de las trasacciones.
Concretamente con esta select:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
db.transaction(function (tx)
{
    var resultados="";
    tx.executeSql('SELECT * FROM users WHERE id = ?', [5],
        function callback(tx, results) {
            var len = results.rows.length, i;
            alert("VarLen vale"+len);
            for (i = 0; i < len; i++)
            {
                alert("dentro del for");
                alert(results.rows.item(i).text);
                resultados=results.rows.item(i).text;
            }
        },function errorCallback(tx, error)
        {
            alert(error.message);
        }
    );
    document.getElementById("results").innerHTML=resultados;
});

Mediante alert,concretamente en el primero me dice "VarLen vale 0".Por tanto no entra en el "for" pero antes de esta funcion le hago un insert a la tabla que si funciona:
1
2
3
4
5
db.transaction( function (tx){
    tx.executeSql('insert into users(id, name, email) VALUES (2,"foooooooooo","miEmail@lalalala")');
},function (err){
    alert(err.message)
});

Nunca he usado esto hasta entonces.
Alguna idea?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de xve
Val: 1.144
Oro
Ha mantenido su posición en HTML (en relación al último mes)
Gráfica de HTML

Transacciones BD Navegador Programacion Web

Publicado por xve (1543 intervenciones) el 14/05/2018 16:59:12
Hola Victor, este lenguaje no es HTML!!!

Que lenguaje es?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Lopez
Val: 886
Plata
Ha mantenido su posición en HTML (en relación al último mes)
Gráfica de HTML

Transacciones BD Navegador Programacion Web

Publicado por Lopez (271 intervenciones) el 15/05/2018 06:41:48
xve,

Es HTML5. Sino me equivoco es el descontinuado websql.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Transacciones BD Navegador Programacion Web

Publicado por Victor (22 intervenciones) el 15/05/2018 08:41:12
Ya no se utiliza?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lopez
Val: 886
Plata
Ha mantenido su posición en HTML (en relación al último mes)
Gráfica de HTML

Transacciones BD Navegador Programacion Web

Publicado por Lopez (271 intervenciones) el 16/05/2018 20:03:33
Aun disponible y sin problemas, pero va en un tema de la filosofía de compatibilidad/standares de
cada compañía de navegadores con respecto a la dependencia (websql depende de Sqllite),
estas prefieren una alternativa mas de código propio.
y luego la llegada otras alternativas de almacenaje como pouchDB.terminaron por dejar un tanto en el
olvido la apuesta de Google. Creo Safari también invirtió capital.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lopez
Val: 886
Plata
Ha mantenido su posición en HTML (en relación al último mes)
Gráfica de HTML

Transacciones BD Navegador Programacion Web

Publicado por Lopez (271 intervenciones) el 15/05/2018 06:52:11
Hola Victor,

Uff! Estoy re olvidado en este tema, pero y que tal así?

1
2
3
4
db.transaction(function(transaction){
    transaction.executeSql(("SELECT * FROM users WHERE id=?"), [5],
    function(transaction, results){successCallback(resultados);}, errCallback);
});

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Transacciones BD Navegador Programacion Web

Publicado por Victor (22 intervenciones) el 15/05/2018 08:48:20
He ejecutado tu metodo y me salta el error:"Uncaught ReferenceError: errCallback is not defined" concretamente en esta linea
1
transaction.executeSql(("SELECT * FROM users WHERE id=?"), [5],

Mediante alerts me he dado cuenta de que el insert fallaba parace ser que por el "id unique",asi que se lo he quitado.
Lo he vuelto a modificar para que borrar y crear la tabla de nuevo para que el campo id ya no sea unique,ahora queda así:
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
function crearBD(){
    var db=openDatabase('mybd','1.0','My second WebDataBase',2*1024*1024);
    if(!db){
        alert("No se ha creado la base de datos")
    }else{
        var version=db.version;
        alert("La version de la base de datos es:"+version);
    }
 
    db.transaction(function (tran){
      tran.executeSql('Drop table users')
    },function (error){
        alert("No se ha borrado la tabla por=>"+error.message);
    });
 
    db.transaction(function (tran){
 
        tran.executeSql('CREATE TABLE IF NOT EXISTS  users (id , name, email)');
 
    },function (err){
        alert(err.message);
    });
 
    //Transacciones
    //Se utilizan transacciones para cerciorarse de que todas las acciones ha salido bien
    //De fallar una sola harimos "rollBack" lo que quiere decir que vuelve al estado inicial.
    db.transaction( function (tx){
        tx.executeSql('insert into users(id, name, email) VALUES (3,"foooooooooo","miEmail@lalalala")');
    },function (err){
        alert("Error Insert=>"+err.message)
    });
 
    //Sentencias SQL
    /*
     * executeSql se utiliza para lectura y escritura 
     * ya que protege contra los ataques de inyeccion SQL
     * Y proporciona metodos callback para procesar los valores devueltos
     */
    db.transaction(function (tx)
    {
        var resultados="";
        tx.executeSql('SELECT * FROM users WHERE id = ?', [5],
        function callback(tx, results) {
            var len = results.rows.length, i;
            alert("VarLen vale"+len);
            for (i = 0; i < len; i++)
            {
                alert("dentro del for");
                alert(results.rows.item(i).text);
                resultados=results.rows.item(i).text;
            }
        },function errorCallback(tx, error)
        {
            alert(error.message);
        }                  );
        document.getElementById("results").innerHTML=resultados;
    });
 
    db.transaction(function (tx){
        var len= tx.executeSql('Select * from users');
        alert("ConsultaSimple len vale=>"+len);
    });
}
Pero sigo sin poder recuperar ningún registro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lopez
Val: 886
Plata
Ha mantenido su posición en HTML (en relación al último mes)
Gráfica de HTML

Transacciones BD Navegador Programacion Web

Publicado por Lopez (271 intervenciones) el 16/05/2018 19:48:22
Bro,

Prueba así y cuéntame que tal, si persiste:

1
tx.executeSql('SELECT * FROM users WHERE id = ?', [resultados],

Cuéntanos que tal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Transacciones BD Navegador Programacion Web

Publicado por Victor (22 intervenciones) el 17/05/2018 13:52:03
Buenas tardes.

Salucion final a sido cambiar esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
db.transaction(function (tx)
{
    var resultados="";
    var registros=0;
    tx.executeSql('SELECT * FROM users ', [],
    function (tx, results) {
        var len = results.rows.length, i;
        for (i = 0; i < len; i++)
        {
            resultados=results.rows.item(i).email;
            registros++;
        }
    },function errorCallback(tx, error)
    {
        alert("Error CallBack=>"+error.message);
    });
    document.getElementById("results").innerHTML="Holaaaaaaaaaaa";
    alert("Dentro del callback len vale=>"+registros);
});
Por esto otro que encontré por ahi:
1
2
3
4
5
6
7
8
9
10
11
12
13
db.transaction(function (tx)
{
    var resultados="";
    var registros=0;
    tx.executeSql('SELECT * FROM USERS ', [],function (tx, results) {
        var len = results.rows.length, i;
        for (i = 0; i < len; i++)
        {
            resultados="<p>Con mi metodo:" +results.rows.item(i).name+ "<p>";
            document.getElementById("results").innerHTML+=resultados;
        }
    },null);
});

Alguien sabría decirme por que estaba fallando el mio?

Saludos,y como siempre muchas gracias por atenderme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de xve
Val: 1.144
Oro
Ha mantenido su posición en HTML (en relación al último mes)
Gráfica de HTML

Transacciones BD Navegador Programacion Web

Publicado por xve (1543 intervenciones) el 17/05/2018 15:40:13
Gracias por compartirlo!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lopez
Val: 886
Plata
Ha mantenido su posición en HTML (en relación al último mes)
Gráfica de HTML

Transacciones BD Navegador Programacion Web

Publicado por Lopez (271 intervenciones) el 17/05/2018 19:27:03
Victor,

Creo estábamos pasando mal los parámetros XD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Transacciones BD Navegador Programacion Web

Publicado por Victor (22 intervenciones) el 18/05/2018 07:36:17
Es posible.

Hay que probar hasta dar con la tecla o teclas ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar