2016-03-25 7 views
0

AngularJS ile oluşturulmuş bir Cordova uygulamasında SQlite kullanıyorum. OnDeviceReady() uygulamasına önyükleme yapar ve sonra bir veritabanı ve belirli bir tablonun var olup olmadığını ve sonuca bağlı olarak belirli şeyleri kontrol eder. Uygulama Android'de beklendiği gibi çalışır, ancak iOS'ta yumruk süresini çalıştırır ve daha sonra simülatörün veya cihazın beyaz sayfasında engellenir! Herkes bu sorunu nasıl çözeceğine dair bana bir fikir verebilir mi?SQLite veritabanı ile Cordova uygulaması, iOS'ta ilk çalıştırdıktan sonra donuyor ancak Android'de çalışıyor

var db = window.sqlitePlugin.openDatabase(
        // options 
        { 
         name: "users_info.db", 
         location: 2 
        }, 
         // success callback 
         function (msg) { 
          // console.log("success: " + msg); 
          // console.log(msg); 
         }, 
         // error callback 
         function (msg) { 
          // console.log("error: " + msg); 
         } 
        ); 
db.transaction(function (tx) { 
    tx.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name='user'", [], function (tx, result) { 

     if (result.rows.length == 0) { 
      console.log('theres no table with this name '); 
      $scope.$apply(function() { 
       $location.path('/login'); 
      }); 
      } else { 
      tx.executeSql(
      "select * from user;", 
      [], 
      function (tx, res) { 
       var row = res.rows.item(0); 
       console.log(row.role); 
       if (row.role == 4) { 
        $scope.$apply(function() { 
         userService.roleid = '4'; 
         userService.userid = row.userid; 
         $location.path('/student'); 
        }); 
       } 
      }); 
      console.log('this table exists'); 
     } 
    }); 
}); 

Ben de veritabanını açmak için aşağıdaki kodu denediniz ama yine iOS'taki uygulama sorununun nedeni benim sayfa içeren olmasıydı öğrendim

var db = $cordovaSQLite.openDB({ name: "users_info.db", location: 1, iosDatabaseLocation: 'default' }, 
    // success callback 
         function (msg) { 
          // console.log("success: " + msg); 
          console.log(msg); 
          console.log('success'); 
         }, 
         // error callback 
         function (msg) { 
           console.log("error: " + msg); 
           console.log('error'); 
         } 
); 

cevap

0

ilk çalıştırdıktan sonra donuyor SQLite veritabanı için kod snippet'i yüklendiğinde kodların okunmasına neden olan iki kez yenilenir ve SQlite veritabanına aynı anda iki kez yazılır ve bu da veritabanına ve dolayısıyla iOS uygulamasının donmasına neden olur. Kodların sadece bir kez çalıştığından emin oldum ve bir cazibe gibi çalıştı!

İlgili konular