PhoneGap的SQLite的错误23没有获得许可 [英] Phonegap SQLite Error 23 Not Authorized

查看:266
本文介绍了PhoneGap的SQLite的错误23没有获得许可的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

资源:

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

设备/框架信息:


  • 的Nexus 4 - Android电子4.2.2

  • 的PhoneGap 2.9.0

  • 同时使用的用户界面
  • 引导库

我按照PhoneGap的教程版本2.9上创建和管理数据库。到目前为止,我已经发现,很少或几乎没有地方尝试写入到数据库时,人们都在谈论具体的错误23。

我试着写insertBtn的点击功能,它执行insertTemplate功能之后数据库之后得到这个错误。

试图删除一行时deleteBtn事件被触发,它执行deleteTemplate功能时,同样的事情发生。

任何建议?

控制器的文件:

  VAR的databaseName =blackbriar;
VAR的版本= 1;
VAR的displayName =LCTV;
VAR大小= 2097152; //两兆字节
变种DB = NULL;$(文件)。就绪(函数(事件){
    //获取壳数据库
    DB = window.openDatabase(数据库,1.0,科尔多瓦演示,200000);
    db.transaction(populateDb,errorCb,successCb);
    db.transaction(loadTemplates,errorCb,successCb);    $('#insertBtn')。点击(函数(事件){
        db.transaction(insertTemplate,errorCb,successCb);
    });    $('#回')。点击(函数(事件){
        $('#模板)显示()。
        $('#templateEdit')隐藏()。
        $('#回')隐藏()。
    });
    $('#deleteBtn')。点击(函数(事件){
        db.transaction(deleteTemplate,errorCb,successCb);
        $('#回')点击()。
    });
});$(文件)。在('点击','.pill',函数(事件){
    //如果窗口宽度大于480像素时,isMobile变量为假
    变种isMobile = $(窗口).WIDTH()> 480?假:真实的;    $('#currentId)文本($(本).attr('tempid'));
    db.transaction(getTemplateById,errorCb,successCb);    如果($('#currentId')。文本()==-1){
        $('#insertBtn)显示()。
        $('#saveBtn')隐藏()。
        $('#deleteBtn')隐藏()。
        $('#clearBtn)显示()。
    }其他{
        $('#insertBtn')隐藏()。
        $('#saveBtn)显示()。
        $('#deleteBtn)显示()。
        $('#clearBtn')隐藏()。
    }    //检查是否丸是用户界面的变化主动
    如果($(本).hasClass(激活)){
        $(本).removeClass(激活);
        如果(isMobile!){$(本).find ATTR('温度')。('风格','色彩:黑色;');}
    }其他{
        $('丸')removeClass移除(激活)。
        $('丸')找到('温度')ATTR('风格','色彩:黑色;')。;
        $(本).addClass(激活);
        如果(isMobile!){$(本).find ATTR('温度')。('风格','颜色:白色;');}
    }
    如果(isMobile){
        $('#模板')隐藏()。
        $('#templateEdit)显示()。
        $('#回)显示()。
    }
});

我的功能文件:

 函数getShell(的databaseName,版本,显示名,大小){
    返回window.openDatabase(的databaseName,版本,显示名,大小);
}功能populateDb(TX){
    tx.executeSql(CREATE TABLE IF NOT EXISTS模板(ID INTEGER PRIMARY KEY AUTOINCREMENT,TEMPLATENAME,描述,校园,帐号,部门,PROGRAMNAME,专案编号,TASKID)');
}功能errorCb(错误){
    警报(错误处理SQL:+错误code);
}功能successCb(){
    警报(成功!);
}功能insertTemplate(TX){    。VAR TEMPLATENAME = $('#TEMPLATENAME)VAL();
    。Var描述= $('#descriptionField)V​​AL();
    。VAR校园= $('#campusField)V​​AL();
    。VAR帐户= $('#accountField)V​​AL();
    。VAR部门= $('#departmentField)V​​AL();
    。VAR PROGRAMNAME = $('#programNameField)V​​AL();
    。VAR专案编号= $('#projectIdField)V​​AL();
    VAR TASKID = $('#taskIdField)V​​AL()。    tx.executeSql(INSERT INTO模板(TEMPLATENAME,介绍,校园,帐号,部门,PROGRAMNAME,专案编号,TASKID)VALUES('
            +'+ TEMPLATENAME +'+','
            +'+原文+'+','
            +'+校园+'+','
            +''+帐号+''+','
            +'+部门+'+','
            +'+ PROGRAMNAME +'+','
            +'+专案编号+'+','
            +''+任务id +'
            +')');
}功能loadTemplates(TX){
    tx.executeSql(选择模板*',[],templatesSuccess,errorCb);
}功能templatesSuccess(德克萨斯州,结果){
    VAR长度= results.rows.length;
    $('#templateUl)HTML('')。
    $('#templateUl')追加('<李班=templi><一类=丸tempid = - 1方式><文字类=TEMP><我风格=颜色:绿色;阶级=图标加上>< / I>创建< /文本>< / A>< /李>');
    对于(VAR I = 0; I<长度;我++){
        $('#templateUl')追加(。'<李班=templi><一类=丸tempid =+ results.rows.item(I).ID +'><文字类=TEMP>'+ results.rows.item(I).templateName +'< /文本>< / A>< /李>');
    }
}功能getTemplateById(TX){
    VAR currentId = $('#currentId)文本()。
    tx.executeSql(SELECT * FROM WHERE模板ID ='+ currentId,[],loadTemplateSuccess,errorCb);
}功能loadTemplateSuccess(德克萨斯州,结果){
    如果(results.rows.length大于0){
        变种模板= results.rows.item(0);
        VAR TEMPLATENAME = $('#TEMPLATENAME)VAL(template.templateName)。
        Var描述= $('#descriptionField)V​​AL(template.description)。
        VAR校园= $('#campusField)V​​AL(template.campus)。
        VAR帐户= $('#accountField)V​​AL(template.account)。
        VAR部门= $('#departmentField)V​​AL(template.department)。
        VAR PROGRAMNAME = $('#programNameField)V​​AL(template.programName)。
        VAR专案编号= $('#projectIdField)V​​AL(template.projectId)。
        VAR TASKID = $('#taskIdField)V​​AL(template.taskId)。
    }其他{
        。VAR TEMPLATENAME = $('#TEMPLATENAME)VAL('');
        Var描述= $('#descriptionField)V​​AL('')。
        。VAR校园= $('#campusField)V​​AL('');
        。VAR帐户= $('#accountField)V​​AL('');
        VAR部门= $('#departmentField)V​​AL('')。
        。VAR PROGRAMNAME = $('#programNameField)V​​AL('');
        。VAR专案编号= $('#projectIdField)V​​AL('');
        VAR TASKID = $('#taskIdField)V​​AL('')。
    }
}功能deleteTemplate(TX){
    VAR currentId = $('#currentId)文本()。
    警报(currentId);
    tx.executeSql(DELETE FROM模板',[],templatesSuccess,errorCb);
    警报(授权!!!);
}


解决方案

刚走进这个,我不得不卸载应用程序,并重新取得它(也改变了版本,但我不认为做了)。
其次的,所以我卸载该应用程序,每次我调试。这可以是恼人的,如果你要每次插入项目,但ATLEAST解决它。

Resources:

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

Device/Framework Info:

  • Nexus 4 - Android 4.2.2
  • Phonegap 2.9.0
  • Also using the bootstrap library for UI

I have followed the PhoneGap tutorial for version 2.9 on creating, and managing a database. So far I have found little to no places where people are talking about the specific error 23 when trying to write to a database.

I get this error after trying to write to a database after the insertBtn's click function, which executes the insertTemplate function.

The same thing happens when trying to delete a row when the deleteBtn event is fired, which executes the deleteTemplate function.

Any recommendations?

Controller File:

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

My function file:

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('<li class="templi"><a class="pill" tempid="-1"><text class="temp"><i style="color: green;" class="icon-plus"></i> Create</text></a></li>');
    for(var i = 0; i < length; i++) {
        $('#templateUl').append('<li class="templi"><a class="pill" tempid="'+results.rows.item(i).id+'"><text class="temp">'+results.rows.item(i).templateName+'</text></a></li>');
    }
}

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

解决方案

Just came into this, i had to uninstall the app and re made it (Also changed the version but i dont think that did it). Followed this so i uninstall the app everytime i debug. This can be annoying if you have to insert items each time, but atleast solved it.

这篇关于PhoneGap的SQLite的错误23没有获得许可的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆