Phonegap CRUD operations - window.openDatabase



正在尝试使用PhoneGap/Cordova创建一个CRUD操作,而我不断收到"未接收的Domexception:试图突破用户代理的安全策略。-17"指向=>" db = window.opendatabase("雇员"," 1.1"," LearnTopram",200000(;"。这进一步影响了DB.Transaction第25行" untured TypeError:无法读取未定义的属性"交易",因为没有创建数据库。我是否需要任何Sqllite插件,也许还有其他缺少的东西?

<!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>

也许我会帮助您。

打开数据库:

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事件发生之前触发。

最新更新