首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phonegap CRUD操作- window.openDatabase

Phonegap CRUD操作- window.openDatabase
EN

Stack Overflow用户
提问于 2018-04-02 23:03:33
回答 1查看 253关注 0票数 0

我尝试使用phonegap/cordova创建CRUD操作,并且不断收到“未捕获DOMException:试图突破用户代理的安全策略。在window.onload -第17行”pointing =>"db = window.openDatabase("employee","1.1","LearnToProgram",200000);“。这进一步影响了db.transaction第25行“未捕获的TypeError:无法读取未定义的属性'transaction‘”,因为没有创建数据库。我是否需要任何SQLLite插件,也许还缺少其他东西?

代码语言:javascript
复制
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
        <title>SQLLite DB App</title>
          <script type="text/javascript" src="cordova.js"></script>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
        <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
        <script>
        var db;

        window.onload=function()
        {
            document.getElementById('btnSave').addEventListener('click', saveData);
            db = window.openDatabase("employees",  "1.0", "LearnToProgram", 200000);
        }

        function saveData(e)
        {



            db.transaction(saveRecord, onSuccess, onError);
        }

        function saveRecord(transaction)
        {
            var name= document.getElementById('name').value;
            var email = document.getElementById('email').value;
            transaction.executeSql('CREATE TABLE IF NOT EXISTS employeesList (id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, Email TEXT NOT NULL) ');

            var sql= "INSERT INTO employeesList (Name,Email) VALUES ('" + name +"', '" + email + "')";
            console.log(sql);
            transaction.executeSql(sql);
        }

        function onSuccess()
        {
            console.log("Record Saved");
        }

        function onError(error)
        {
            console.log("SQL error: " + error.code);
        }
        </script>
    </head>
    <body>
        <div data-role="page">
        <div data-role="header"><h1>Database Storage</h1></div>
        <div data-role="main" class="ui-content">
        <label for="name">Name</label>
        <input type="text" id="name" />
        <label for="email">Email</label>
        <input type="text" id="email" />
        <button id="btnSave" type="submit">Save</button>
        <button id="showList">Show Employees</button>

        </div><!-- main-->
        </div><!-- page -->
    </body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2018-04-02 23:28:14

也许我能帮你。

要打开数据库:

代码语言:javascript
复制
var db = null;

document.addEventListener('deviceready', function() {
  db = window.sqlitePlugin.openDatabase({
    name: 'my.db',
    location: 'default',
  });
});

重要提示:与其他Cordova/phonegap插件一样,您的应用程序必须等待deviceready事件。这在Angular/ngCordova/Ionic controller/factory/service回调中尤其棘手,这些回调可能在deviceready事件被触发之前触发。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49613694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档