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

12,931

Solution 1

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>

Solution 2

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.

Share:
12,931
Chintan Khetiya
Author by

Chintan Khetiya

~Android ~Java ~Kotlin ~Hybrid ~MySQL/PHP/HTML/CSS/JS ~Products ~Start-up Consultant ~CNSS Certified ~Leadership ~Soft Skills ~Helping Hands Catch Me #Contact Me Java and Android era PhoneGap Framework My Professional Details Email : [email protected] Gtalk : khetiya.chintan Skype : khetiyachintan Note Whatever-Whenever-Wherever Just Remember Me....

Updated on June 04, 2022

Comments

  • Chintan Khetiya
    Chintan Khetiya almost 2 years

    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.