如何从Ionic

时间:2018-04-30 15:22:47

标签: android ionic-framework

我在我的离子应用程序中创建了一个数据库,实际上可以插入和计算记录。我需要的是能够看到实际的数据库本身,以便我可以访问其中的数据。它在android设备里面的离子应用程序在哪里?请参阅下面的代码,了解我是如何创建和保存数据库的。

generateDatabase() {
    var createTableScript = 'CREATE TABLE IF NOT EXISTS lcs' +
      '(rowid INTEGER PRIMARY KEY, entry_plaza TEXT, exit_plaza TEXT, vehicle_class TEXT, user_badge TEXT, scan_time TEXT, toll_fee TEXT, scanned_code TEXT)';
    this.sqlite.create({
      name: 'lcs.db',
      location: 'default'
    }).then((db: SQLiteObject) => {
      db.executeSql(createTableScript, {})
        .then(() => {
          this.presentAlert('Database created', '');
        }).catch(e => {
          this.presentAlert('Error in executing database script', e);
        })
    }).catch(e => {
      this.presentAlert('Error in the create method', e);
    })
  }

1 个答案:

答案 0 :(得分:0)

无法查看SQLite数据库。您必须编写一些代码从应用程序中提取SQLite数据库,然后需要使用DB Browser for SQLite

查看它

要从您的应用程序中提取数据库,请查看以下代码:

window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function (fileSystem) {
$log.log('resolveLocalFileSystemURL - externalRootDirectory success: ', fileSystem);
//var mainDir = 'Backup';
var mainDir = 'MyAppDB/' + 'Backup' + '';
$log.log('Main dir', mainDir);
fileSystem.getDirectory(mainDir, {create: true, exclusive: false}, function (dir) {
  $log.log('getDirectory success: ', dir);
});
});
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function (fileSystem) {
$log.log('resolveLocalFileSystemURL - externalRootDirectory success: ', fileSystem);
var mainDir = 'MyAppDB/' + 'Backup' + '';
$log.log('Main dir', mainDir);
fileSystem.getDirectory(mainDir, {create: true, exclusive: false}, function (dir) {
  $log.log('getDirectory success: ', dir);
  var URI_DB = cordova.file.applicationStorageDirectory + 'databases/';
  var ROOT_DIR = 'file://mnt/sdcard/';
  var PARENT_DIR = ROOT_DIR + mainDir + '/';
  var NAME_DB = 'DB.db';
  var NEW_NAME_BACKUP = today.toString() + '_' + 'MYApp.db';
  $log.log('parent directory', PARENT_DIR);
  $log.log('backup name', NEW_NAME_BACKUP);
  window.resolveLocalFileSystemURL(URI_DB + NAME_DB, function (fs) {
    window.resolveLocalFileSystemURL(PARENT_DIR, function (directoryEntry) {
      fs.copyTo(directoryEntry, NEW_NAME_BACKUP, function () {
        $log.log('The database backup was successful.');
        localforage.setItem('dbbackup', today);
        q.resolve('success');
      });
    }, failFiles);
  });
});
});
 return q.promise;

失败案例:

function failFiles (error) {
 if (error.code === FileError.NOT_FOUND_ERR) {
   alert('Message : NOT_FOUND_ERR');
 } else if (error.code === FileError.SECURITY_ERR) {
   alert('Message : SECURITY_ERR');
 } else if (error.code === FileError.ABORT_ERR) {
   alert('Message : ABORT_ERR');
 } else if (error.code === FileError.NOT_READABLE_ERR) {
   alert('Message : NOT_READABLE_ERR');
 } else if (error.code === FileError.ENCODING_ERR) {
   alert('Message : ENCODING_ERR');
 } else if (error.code === FileError.NO_MODIFICATION_ALLOWED_ERR) {
   alert('Message : NO_MODIFICATION_ALLOWED_ERR');
 } else if (error.code === FileError.INVALID_STATE_ERR) {
   alert('Message : INVALID_STATE_ERR');
 } else if (error.code === FileError.SYNTAX_ERR) {
   alert('Message : SYNTAX_ERR');
 } else if (error.code === FileError.INVALID_MODIFICATION_ERR) {
   alert('Message :  INVALID_MODIFICATION_ERR');
 } else if (error.code === FileError.QUOTA_EXCEEDED_ERR) {
   alert('Message : QUOTA_EXCEEDED_ERR');
 } else if (error.code === FileError.PATH_EXISTS_ERR) {
   alert('Message : PATH_EXISTS_ERR');
 }

您还需要安装文件插件。