[
https://issues.apache.org/jira/browse/CB-2085?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13747370#comment-13747370
]
murali viswanathan commented on CB-2085:
----------------------------------------
it disturbs the main database.
Iam using the database in my main application. When i open a page in the inapp
browser and close using the done button. After coming back to the application,
all the pages which are database driven are not working as i get 'no such
table' error. So i cannot use local storage here. Please guide me.
> Database Deleted when I open childbrowser
> -----------------------------------------
>
> Key: CB-2085
> URL: https://issues.apache.org/jira/browse/CB-2085
> Project: Apache Cordova
> Issue Type: Bug
> Components: Android
> Affects Versions: 2.1.0, 2.2.0
> Environment: Android, Phonegap,
> Reporter: Ismael Olusola Jimoh
> Assignee: Joe Bowser
> Fix For: 2.6.0
>
> Attachments: 2013-01-03-15-56-57-152.png,
> 2013-01-03-15-57-03-482.png, 2013-01-03-15-57-10-684.png,
> 2013-01-03-15-57-20-843.png, 2013-01-03-15-57-30-553.png,
> 2013-01-03-15-57-40-449.png, 2013-01-03-15-57-54-341.png,
> 2013-01-03-15-58-23-263.png, 2013-01-03-15-58-30-526.png,
> 2013-01-03-15-58-37-306.png, 2013-01-03-15-58-51-725.png,
> 2013-01-03-15-58-59-568.png, Phonegap2_3_Test.rar,
> Screenshot_2013-02-15-16-21-21.png, Screenshot_2013-02-15-16-21-37.png,
> Screenshot_2013-02-15-16-22-13.png, Screenshot_2013-02-15-16-22-23.png,
> Screenshot_2013-02-15-16-26-21.png, Screenshot_2013-02-15-16-26-31.png,
> Screenshot_2013-02-15-16-26-50.png, Screenshot_2013-02-15-16-27-00.png,
> Screenshot_2013-02-15-16-39-05.png, Screenshot_2013-02-15-16-39-11.png,
> Screenshot_2013-02-15-16-39-17.png, Screenshot_2013-02-15-16-39-24.png,
> Screenshot_2013-02-15-16-39-30.png, Screenshot_2013-02-15-16-39-38.png,
> ShareSocial.zip
>
>
> Created an app where on the first page, user creates and enters values into a
> table, upon success, he is sent to a second page which Contains a link to
> Google using Childbrowser as well as a button to show content of database.
> If user clicks button to show content of database immediately he gets to page
> 2, the result is as expected but if he should click button to childbrowser,
> when he closes and clicks the result button, it states table does not exist
> returning *Error: Undefined*
> However, if user goes back to page one and recreates the whole table as well
> as enter the values, then clicks childbrowser, return and click return
> button, it starts working.
> All subsequent visits also work provided you do not clear data/cache.
> Below is a code that can be used to reproduce this:
> ----------------------------------------------------------------------------Main.html
> (Page1)
> ----------------------------------------------------------------------------
> <!DOCTYPE HTML>
> <html>
> <head>
> <meta name="viewport" content="user-scalable=no,width=device-width" />
> <meta http-equiv="Content-type" content="text/html; charset=utf-8">
> <script src="cordova-2.1.0.js" type="text/javascript"></script>
> <script type="text/javascript" charset="utf-8" src="main.js"></script>
> <script src="jquery-1.8.2.min.js" type="text/javascript"></script>
> <script src="jquery.mobile-1.2.0.min.js" type="text/javascript"></script>
> <link rel="stylesheet" href="jquery.mobile-1.2.0.css" type="text/css"
> media="screen" title="no title" charset="utf-8">
>
> <script type="text/javascript">
> var DBObject;
> function DoDBFunctionality() {
> try {
> DBObject = window.openDatabase("TestDB", "1.0",
> "TestDataBase",1024 * 1024 * 2);
> } catch (ex) {
> alert("in catch" + ex.message);
> }
> DBObject.transaction(insertIntoDB,onError,onSuccess);
> function insertIntoDB(tx) {
> var name = "Vaibhav";
> //tx.executeSql('DROP TABLE IF EXISTS TestTable');
> tx.executeSql('CREATE TABLE IF NOT EXISTS TestTable (id
> unique PRIMARY KEY, data)');
> tx.executeSql('INSERT INTO TestTable (data) VALUES ("First
> row")');
> tx.executeSql('INSERT INTO TestTable (data) VALUES ("Second
> row")');
> //alert("In Insert Function");
> }
> function onSuccess() {
> alert("Insertion in DB is successfull");
> window.open("index1.html");
> }
> /*
> * If DB throws an Error
> */
> function onError(err) {
> alert("Error is : " +err.message);
> }
> }
> </script>
> <style>
>
> </style>
> </head>
> <body >
> <h1>Hello DB</h1>
> <input type="submit" name="DB" value="DB" onclick="DoDBFunctionality()"
> />
> </body>
> </html>
> ----------------------------------------------------------------------------
> ----------------------------------------------------------------------------
> Index1.html(page2)
> ----------------------------------------------------------------------------
> <!DOCTYPE HTML>
> <html>
> <head>
> <meta name="viewport" content="user-scalable=no,width=device-width" />
> <meta http-equiv="Content-type" content="text/html; charset=utf-8">
> <script src="cordova-2.1.0.js" type="text/javascript"></script>
> <script type="text/javascript" charset="utf-8" src="main.js"></script>
> <script src="jquery-1.8.2.min.js" type="text/javascript"></script>
> <script src="jquery.mobile-1.2.0.min.js" type="text/javascript"></script>
> <link rel="stylesheet" href="jquery.mobile-1.2.0.css" type="text/css"
> media="screen" title="no title" charset="utf-8">
> <script src="childbrowser.js" type="text/javascript"></script>
> <script type="text/javascript">
>
> var DBObject //= window.openDatabase("TestDB", "1.0", "TestDataBase",1024
> * 1024 * 2);
>
> function CB() {
> /*
> *To open Childbrowser window in application
> */
> var url = "http://www.google.com";
> window.plugins.childBrowser.showWebPage( url, {showLocationBar:
> true});
> //window.plugins.childBrowser.onClose();
> window.plugins.childBrowser.onClose = closed;
> }
>
> function closed() {
> //location.reload();
> //window.openDatabase("TestDB", "1.0", "TestDataBase",1024 *
> 1024 * 2);
> }
> function CallDB() {
> try
> {
> DBObject = window.openDatabase("TestDB", "1.0",
> "TestDataBase",1024 * 1024 * 2);
> }
> catch (ex)
> {
> alert("in catch" + ex.message);
> }
> DBRetrieve();
> }
> function DBRetrieve() {
> DBObject.transaction(retrieveIntoDB,onError,onSuccess);
>
> function retrieveIntoDB(tx) {
> tx.executeSql('SELECT * FROM
> TestTable',[],querySuccess1, onError);
> }
> function querySuccess1(tx,results)
> {
> /* alert("Returned rows = " + results.rows.length);
> // this will be true since it was a select
> statement and so rowsAffected was 0
> if (!results.rowsAffected) {
> alert('No rows affected!');
> return false;
> }
> alert("Last inserted row ID = " +
> results.insertId);*/
> var len = results.rows.length;
> alert("Demo table: " + len + " rows
> found.");
> for (var i=0; i<len; i++){
> alert("Row = " + i + " ID = " +
> results.rows.item(i).id + " Data = " + results.rows.item(i).data);
> }
> }
> function onSuccess() {
>
> }
>
> function onError(err) {
> alert("Error is : " +err.message);
> }
> }
>
>
> function nextpage() {
> CallDB();
> }
>
> </script>
> <style>
>
> </style>
> </head>
> <body >
> <h1>Hello ChildBrowser</h1>
> <input type="submit" name="CB" value="CB" onclick="CB()" />
> <br/>
> <input type="submit" value="DBRetrieve" onclick="nextpage()" />
> </body>
> </html>
> ----------------------------------------------------------------------------
> I have tested this on Phonegap 2.1 and 2.2.
> I have also tested this on Android 4.0, 4.2 and been able to reproduce on
> both.
> Thanks, I look forward to your quick response.
> Ismael O. Jimoh
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira