Errore SQLite di PhoneGap 23 non autorizzato

risorse:

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

Informazioni su dispositivo / quadro:

  • Nexus 4 – Android 4.2.2
  • PhoneGap 2.9.0
  • Utilizza anche la libreria bootstrap per l’interfaccia utente

Ho seguito il tutorial PhoneGap per la versione 2.9 sulla creazione e gestione di un database. Finora ho trovato poco o nessun luogo in cui le persone parlano dell’errore specifico 23 quando provano a scrivere su un database.

Ottengo questo errore dopo aver provato a scrivere su un database dopo la funzione click di insertBtn, che esegue la funzione insertTemplate.

La stessa cosa accade quando si tenta di eliminare una riga quando viene triggersto l’evento deleteBtn, che esegue la funzione deleteTemplate.

Qualche consiglio?

File di controllo:

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(); } }); 

Il mio file di funzioni:

 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!!!"); }

    Appena entrato in questo, ho dovuto disinstallare l’app e rielaborata (ho cambiato anche la versione ma non penso che l’abbia fatto). Seguito questo quindi disinstallo l’applicazione ogni volta che eseguo il debug. Questo può essere fastidioso se devi inserire elementi ogni volta, ma almeno lo hai risolto.