La declaración de inserción SQL no funciona en Javascript

Estoy tratando de hacer que mi base de datos WebSQL crezca usando una matriz JSON (se llama ObjectmyJSONObject, la matriz se llamacostcodes).

La función se ejecuta al hacer clic, la base de datos se crea correctamente, pero los datos no se insertan en la base de datos. Ni siquiera lanza y error, simplemente no hace nada.

Mi idea inicial fue que los datos no se escaparon correctamente, pero no sé exactamente dónde / cómo escapar. Así que estoy perplejo.

<code>    localDB = null;

    function initDB()
    {
        if (localDB==null)
        {
            var shortName = 'Costcode';
            var version = '1.0';
            var displayName = 'Costcode';
            var maxSize = 217802; // in bytes
            localDB = window.openDatabase(shortName, version, displayName, maxSize);
        }

    }
            function buildTable()
    {
       var sQuery = 'CREATE TABLE IF NOT EXISTS Costcode ('+
                    'id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,' +
                    'cost_code_no VARCHAR NULL,' +
                    'row_unique_no VARCHAR NULL,' +
                    'cost_class_no VARCHAR NULL,' +
                    'Table_Version VARCHAR DEFAULT "1.0");';
        try
        {
            initDB();
            localDB.transaction(function(transaction)
            {
                transaction.executeSql(sQuery, []);
                console.log('sucess');
            });
        }
        catch (e)
        {
           alert("Error: Unable to create table 'x" + "' " + e + ".");
           return;
       }    
    }


 function exeSQLFast()
    {

                initDB();
                localDB.transaction(function(transaction)
                {
                    for (var x = 0; x <myJSONObject.costcodes.length; x++)
                    {

                        var costcodeno = myJSONObject.costcodes[x].cost_code_no;
                        var rowuniqueid = myJSONObject.costcodes[x].row_unique_id;
                        var costclassno = myJSONObject.costcodes[x].cost_class_no;
                        console.log(costcodeno);
                        console.log(rowuniqueid); 
                        console.log(costclassno);
                    transaction.executeSql('INSERT INTO Costcode (cost_code_no, row_unique_id, cost_class_no) VALUES (? , ? , ?)',
                     [costcodeno,
                     rowuniqueid,
                     costclassno]
                     , function(transaction, results)
                        {
                            console.log(costcodeno);
                            console.log('hooray');
                        }

                    )};
                    }
            )}

</script>
</head>

<body onLoad="buildTable();">
<input type="button" onClick="exeSQLFast();" value='button'>
</body>
</html>
</code>

El registro de la consola muestra que todas las variables están definidas correctamente, pero no está ejecutando la instrucción de inserción. ¿Algunas ideas?

Aquí hay un ejemplo demyJSONObject.costcodes[2]

<code>cost_class_no: "    3"
cost_code_no: "      1000"
row_unique_id: 335
</code>

Eso parece un problema no es así ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta