[ 
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

Reply via email to