Erreur Phonegap SQLite 23 non autorisée

Ressources:

http://docs.phonegap.com/fr/2.9.0/cordova_storage_storage.md.html#database_version

Informations sur l’appareil / la structure:

  • Nexus 4 – Android 4.2.2
  • Phonegap 2.9.0
  • Utilisation également de la bibliothèque d’amorçage pour l’interface utilisateur

J’ai suivi le tutoriel PhoneGap pour la version 2.9 sur la création et la gestion d’une firebase database. Jusqu’à présent, j’ai trouvé peu ou pas d’endroits où les gens parlent de l’erreur spécifique 23 lorsqu’ils essaient d’écrire dans une firebase database.

Je reçois cette erreur après avoir essayé d’écrire dans une firebase database après la fonction click de insertBtn, qui exécute la fonction insertTemplate.

La même chose se produit lorsque vous essayez de supprimer une ligne lorsque l’événement deleteBtn est déclenché, ce qui exécute la fonction deleteTemplate.

Des recommandations?

Fichier de contrôleur:

var databaseName = "blackbriar"; var version = 1; var displayName = "lctv"; var size = 2097152; // two megabytes var db = null; $(document).ready(function(event){ // Gets shell for database db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000); db.transaction(populateDb, errorCb, successCb); db.transaction(loadTemplates, errorCb, successCb); $('#insertBtn').click(function(event){ db.transaction(insertTemplate, errorCb, successCb); }); $('#back').click(function(event){ $('#templates').show(); $('#templateEdit').hide(); $('#back').hide(); }); $('#deleteBtn').click(function(event){ db.transaction(deleteTemplate, errorCb, successCb); $('#back').click(); }); }); $(document).on('click', '.pill', function(event){ // If window width is greater than 480px, isMobile variable is false var isMobile = $(window).width() > 480 ? false : true; $('#currentId').text($(this).attr('tempid')); db.transaction(getTemplateById, errorCb, successCb); if($('#currentId').text() == "-1"){ $('#insertBtn').show(); $('#saveBtn').hide(); $('#deleteBtn').hide(); $('#clearBtn').show(); } else { $('#insertBtn').hide(); $('#saveBtn').show(); $('#deleteBtn').show(); $('#clearBtn').hide(); } // Checks if pill is active for UI changes if($(this).hasClass('active')){ $(this).removeClass('active'); if(!isMobile){$(this).find('.temp').attr('style', 'color: black;');} } else { $('.pill').removeClass('active'); $('.pill').find('.temp').attr('style', 'color: black;'); $(this).addClass('active'); if(!isMobile){$(this).find('.temp').attr('style', 'color: white;');} } if(isMobile) { $('#templates').hide(); $('#templateEdit').show(); $('#back').show(); } }); 

Mon fichier de fonction:

 function getShell(databaseName, version, displayName, size) { return window.openDatabase(databaseName, version, displayName, size); } function populateDb(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS templates (id INTEGER PRIMARY KEY AUTOINCREMENT, templateName, description, campus, account, department, programName, projectId, taskId)'); } function errorCb(error) { alert("Error processing SQL: "+error.code); } function successCb() { alert("Success!"); } function insertTemplate(tx) { var templateName = $('#templateName').val(); var description = $('#descriptionField').val(); var campus = $('#campusField').val(); var account = $('#accountField').val(); var department = $('#departmentField').val(); var programName = $('#programNameField').val(); var projectId = $('#projectIdField').val(); var taskId = $('#taskIdField').val(); tx.executeSql('INSERT INTO templates (templateName, description, campus, account, department, programName, projectId, taskId) VALUES (' +'"'+templateName+'"'+', ' +'"'+description+'"'+', ' +'"'+campus+'"'+', ' +'"'+account+'"'+', ' +'"'+department+'"'+', ' +'"'+programName+'"'+', ' +'"'+projectId+'"'+', ' +'"'+taskId+'"' +')'); } function loadTemplates(tx) { tx.executeSql('SELECT * from templates', [], templatesSuccess, errorCb); } function templatesSuccess(tx, results) { var length = results.rows.length; $('#templateUl').html(''); $('#templateUl').append('
  • Create
  • '); for(var i = 0; i < length; i++) { $('#templateUl').append('
  • '+results.rows.item(i).templateName+'
  • '); } } function getTemplateById(tx) { var currentId = $('#currentId').text(); tx.executeSql('SELECT * FROM templates WHERE id = '+currentId, [], loadTemplateSuccess, errorCb); } function loadTemplateSuccess(tx, results) { if(results.rows.length > 0){ var template = results.rows.item(0); var templateName = $('#templateName').val(template.templateName); var description = $('#descriptionField').val(template.description); var campus = $('#campusField').val(template.campus); var account = $('#accountField').val(template.account); var department = $('#departmentField').val(template.department); var programName = $('#programNameField').val(template.programName); var projectId = $('#projectIdField').val(template.projectId); var taskId = $('#taskIdField').val(template.taskId); } else { var templateName = $('#templateName').val(''); var description = $('#descriptionField').val(''); var campus = $('#campusField').val(''); var account = $('#accountField').val(''); var department = $('#departmentField').val(''); var programName = $('#programNameField').val(''); var projectId = $('#projectIdField').val(''); var taskId = $('#taskIdField').val(''); } } function deleteTemplate(tx) { var currentId = $('#currentId').text(); alert(currentId); tx.executeSql('DELETE FROM templates', [], templatesSuccess, errorCb); alert("Authorize!!!"); }

    Je viens tout juste d’entrer dans cela, j’ai dû désinstaller l’application et la faire (j’ai également changé la version, mais je ne pense pas que cela l’ait fait). A suivi ceci donc je désinstalle l’application à chaque fois que je débogue. Cela peut être gênant si vous devez insérer des éléments à chaque fois, mais au moins le résoudre.