android - 如何在 nativescript/angular android 中导入/导出 sqlite 数据库?

标签 android sqlite nativescript angular2-nativescript

我正在尝试使用按钮 export 整个sqlite 数据库 到SD 卡内存 单击 项目(备份功能)。我在谷歌上搜索了同样的内容,但似乎是负面的回应。我正在使用 https://github.com/NathanaelA/nativescript-sqlite plugin 为此。还需要使用文件选择器导入导出的数据库。现在,我正在尝试使用带有 nativescript 的 java 代码来实现它。任何 nativescript 方式的帮助将不胜感激。提前致谢。

最佳答案

我为 android 导出数据库的解决方案是创建一个开发者页面并在其中添加一个按钮:

已编辑

<Button class="btn  m-3" height="50" row="1" text="ExportDB" (tap)="exportDb()"></Button>

点击功能代码是:

public exportDb() {
    console.log('######################### exporting DB ##################');
    this.copyAndroidFileUsingStream('/data/data/{your package name }/databases/{database name}.db',
        fs.path.join(this.getDownloadFolderPath(), {output filename}.db));
}

public getDownloadFolderPath() {
    if (!!application.ios) {
        const fileManager = utilModule.ios.getter(NSFileManager, NSFileManager.defaultManager);
        const paths = fileManager.URLsForDirectoryInDomains(15, 1);
        const url = paths.objectAtIndex(0);
        return url.path;
    } else {
        return android.os.Environment.getExternalStoragePublicDirectory(
            android.os.Environment.DIRECTORY_DOWNLOADS).toString();
    }
}

// copy file only for android
    public copyAndroidFileUsingStream = (source, dest): void => {
        let is: java.io.InputStream = null;
        let os: java.io.OutputStream = null;
        try {
            is = new java.io.FileInputStream(source);
            os = new java.io.FileOutputStream(dest);
            //    let buffer = Array.create("byte", 1024);

            const buffer = Array.create('byte', 4096);
            let length: number;
            // tslint:disable-next-line:no-conditional-assignment
            while ((length = is.read(buffer)) > 0) {
                os.write(buffer, 0, length);
            }
        } catch (e) {
            this.errorService.handleError(e);
        } finally {
            console.log('copy done');
            is.close();
            os.close();
        }
    }

关于android - 如何在 nativescript/angular android 中导入/导出 sqlite 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49144729/

相关文章:

java - 使用 ViewPager 在 Xamarin.Android 上以轮播样式显示图像幻灯片并使用突出的子项进行填充,Viewpager 错误地计算参数

java - setOnItemClickListener() 不适用于 Fragment 中的 ExpandableHeightGridView

java - 直方图比较

mysql - AWS RDS中将sqlite3从Django迁移到mysql总是报语法错误

python - QSqlRelationalTableModel 仅填充前 256 条记录

Nativescript imagepicker .getImage() is not a function 错误

javascript - Nativescript http php 请求

android - HTTPPOST 到 aspx 文件

java - 如何将 android Activity 上下文从 typescript 文件传递​​到 nativescript 中的 Java 文件

c# - LINQ 查询 SQLite 时出错