没有DB在本地www和Android设备上使用SQLite插件

时间:2016-04-19 12:32:23

标签: android angularjs sqlite ionic-framework

我为我的应用程序使用sqlite插件,数据库包含3个表。 在桌面上,一切正常,应用程序访问'数据。但是,我没有在文件夹中找到数据库,当我的设备上运行时,app / package文件夹中没有数据库。

这是我的代码:

app.js:

var db=null;

var myApp = angular.module('starter', ['ionic', 'ngCordova'])

myApp.run(function($ionicPlatform, $cordovaSQLite) {
$ionicPlatform.ready(function() {
...

if (window.cordova) {
db = $cordovaSQLite.openDB({ name: "my.db", location: 1, iosDatabaseLocation: 'default' }); //device
}else{
db = window.openDatabase("my.db", '1', 'my', 1024 * 1024 * 100); // browser


}
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS Utilisateur (id integer primary key, cleapi integer, siret integer)");
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS Avis (id integer primary key, siret integer, note integer, date text, reference text, titre text, texte text )");
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS InfosAdherent (id integer primary key, notegenerale integer, nbavis integer, avispos integer, avisneu integer, avisneg integer, datedebut text )");

});
})

.controller('CtrlConnexion', function($scope, $cordovaNetwork, $rootScope,$http, $cordovaSQLite) {
document.addEventListener("deviceready", function () {

if (window.cordova) {
db = $cordovaSQLite.openDB({ name: "my.db", location: 'default', iosDatabaseLocation: 'default' }); //device
}else{
db = window.openDatabase("my.db", '1', 'my', 1024 * 1024 * 100); // browser


}
var query = "INSERT INTO Utilisateur (id,cleapi,siret) VALUES (1,1234,73282932000074)";
$cordovaSQLite.execute(db, query).then(function(res) {
console.log("ok uti");
alert("ok uti");
}, function (err) {
console.error(err);
console.log("pas ok user");
});

var query1 = "INSERT INTO Avis (id,siret, note, date, reference,titre, texte) VALUES (1,73282932000074,3,'24/12/2013','REFREDF','Titreavis','texteavis')";
$cordovaSQLite.execute(db, query1).then(function(res) {
console.log("ok avis");
alert("ok avis");
}, function (err) {
console.error(err);
console.log("pas ok avis");
});

var query2 = "INSERT INTO InfosAdherent (id,notegenerale,nbavis,avispos,avisneu,avisneg,datedebut) VALUES (1,4,6,2,3,1,'11/04/2011')";
$cordovaSQLite.execute(db, query2).then(function(res) {
console.log("ok infos");
alert("ok infos");
}, function (err) {
console.error(err);
console.log("pas ok infos");
});

    $scope.network = $cordovaNetwork.getNetwork();
    $scope.isOnline = $cordovaNetwork.isOnline();
    $scope.$apply();

    // Si on est en ligne
    $rootScope.$on('$cordovaNetwork:online', function(event, networkState){
        $scope.isOnline = true;
        $scope.network = $cordovaNetwork.getNetwork();            
        $scope.$apply();
    })

    // Si on est hors ligne
    $rootScope.$on('$cordovaNetwork:offline', function(event, networkState){
        console.log("got offline");
        $scope.isOnline = false;
        $scope.network = $cordovaNetwork.getNetwork();
        $scope.$apply();
    })

    console.log(FileTransfer);
}, false);
})

login.html(没什么特别的)

<ion-view class="panelogin" title="Login" ng-controller="LoginCtrl">


<ion-content style="margin:30px;" scrollbar-x="false" scrollbar-y="false"  overflow-scroll="false">


login form
...
  <button nav-clear class="button button-block button-energized" ng-click="LogIn()">
    Go !
  </button>
</ion-content>
</ion-view>

index.html:

<!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
<link href="css/ionic.app.css" rel="stylesheet">
-->


<script type="text/javascript" src="plugins/cordova-sqlite-storage/www/SQLitePlugin.js"></script>




<!-- cordova script (this will be a 404 during development) -->
<script src="cordova.js"></script>



<!-- your app's js -->
<script src="js/app.js"></script>

我尝试了很多解决方案(在设备就绪,db init args位置,...)但没有任何作用。在我的www文件夹中没有my.db,认为通过chrome可以看到表内容是神奇的。

希望有人可以帮助我^^

干杯

2 个答案:

答案 0 :(得分:1)

如果您正在使用Chrome调试应用,可以通过打开开发人员工具(Ctrl + Shift + J)然后转到左侧面板上的“资源”选项卡来查看您的SQLite数据库。选项称为Web SQL,所有数据库都应列在那里。

在设备中并不是那么简单,要在Android设备上看到这个数据库应该是root用户,你需要一个根文件管理器来访问以下文件夹:

  

数据/数据/ [包名] /数据库

答案 1 :(得分:0)

好的Android,所以该文件在设备上,但我们无法看到它? (在ios平台my.db中)