Error processing SQL: TypeError: window.openDatabase is not a function

 ̄綄美尐妖づ 提交于 2019-12-07 22:19:55

问题


I have some strange issue in my code. i have create simple DB_Function.js to manage JS function inside html page.

i am calling function inside <body onLoad="CALL_DB()"> so first that will initialize the DB and create table if needed.

Issue is here ,

  • Working : Chrome
  • Not Working : Android Mobile & Fire Fox

Code are as below :

DB_Function.js

function CALL_DB() {
    try {
        alert("call_db");
        var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
        db.transaction(populateDB, errorCB, successCB);
    } catch (err) {
        alert("Error processing SQL: " + err);
    }
}


function populateDB(tx) {
    try {
        alert("call_table");
        tx.executeSql('DROP TABLE IF EXISTS DEMO');
        tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
        tx.executeSql('INSERT INTO DEMO (id, data) VALUES (3, "C")');
        tx.executeSql('INSERT INTO DEMO (id, data) VALUES (4, "K")');
    } catch (err) {
        alert("Error processing SQL: " + err);
    }
}


function errorCB(tx, err) {
    alert("Error processing SQL: " + err);
}

// Transaction success callback

function successCB() {
    alert("success!");
}

Test.html

<!DOCTYPE html>
<html>
  <head>
    <title>Storage Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8" src="js/DB_function.js"></script>

  </head>
  <body onLoad="CALL_DB()">
    <h1>Example</h1>
    <p>Database</p>
  </body>
</html>

Here is the my JS FIDDLE Please help me i don't know where i am wrong.

Thanks for read my query.


回答1:


You are using Web SQL Database, which is not supported by Firefox. Also, the specification is abandoned by the W3C.

Have a look at IndexedDB (caniuse) instead. There is also at least one shim to make IndexedDB work in browsers that only support Web SQL Database.

The code "works" in this updated fiddle on Android Browser 4.1.2.




回答2:


Issue was here,

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>

I have address a live js file to load so might be they was not able to load while launch the application.

So, I have save it locally in assets/www/js/cordova.js.

So finally it looks like above and its working for me perfectly.

 <script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>



回答3:


Look like your haven't initialize Cordova / PhoneGap API. You must first listen to deviceReady event prior to manipulate the APIs

Look at the following doc: http://docs.phonegap.com/en/2.9.0/cordova_events_events.md.html#deviceready



来源:https://stackoverflow.com/questions/18605614/error-processing-sql-typeerror-window-opendatabase-is-not-a-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!