【问题标题】:Windows 10 removableStorage SQLite databaseWindows 10 可移动存储 SQLite 数据库
【发布时间】:2016-06-15 16:14:15
【问题描述】:

我正在尝试创建一个外部 sqlite 数据库,我跟踪并测试了可移动存储中的文本文件并且可以正常工作。然后我尝试在可移动存储中创建一个数据库:

public static async Task<String> CreateDatabase(string name)
    {
        var folder = await FindRemovableStorage();
        if (folder != null)
        {
            var file = await folder.CreateFileAsync(name, CreationCollisionOption.ReplaceExisting);
            if(file!=null)
            {
                var ret = $"{folder.Name}{file.Name}";
                return ret;
            }
        }
        return null;

    }

public async void ThirdCase()
    {
        var path =await DataLoggerService.CreateDatabase("db.dat");

        var connection = new SQLite.Net.SQLiteConnection(new SQLitePlatformWinRT(), path); //Cannot Open

    }

我正在桌面上进行测试,并返回无法打开。有没有人从典型的本地文件夹中创建了一个数据库?

我在这里所做的更多细节:datalogger

当我完成后,我想在 Raspberry Pi 中实现,理论上 Windows IoT 的代码是相同的,还是 SQLitePlatformWinRT 有任何变化?

版本:更多分析:

我已经测试了一个典型的数据库,像一个魅力一样工作:

Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.dat");

我想在外部存储中创建数据库,为此我需要添加以下步骤:

1.- 添加使用可移动存储的功能。 2.- 添加文件类型关联,以便有权管理该类型的文件

(详情请看:http://expediteapps.com/blog/data-logger-with-windows-10-iot-in-progress/

然后我将路径更改为可移动存储路径,例如“E:\db.dat”,它总是告诉CannotOpen。​​

SQLite 库 PCL 到这里了:

SQLiteApiWinRT.cs

public Result Open(byte[] filename, out IDbHandle db, int flags, IntPtr zvfs)
{
    Sqlite3DatabaseHandle internalDbHandle;
    var ret = (Result)SQLite3.Open(filename, out internalDbHandle, flags, zvfs);
    db = new DbHandle(internalDbHandle);
    return ret;
}

开放在哪里

[DllImport("sqlite3", EntryPoint = "sqlite3_open_v2", CallingConvention = CallingConvention.Cdecl)]

public static extern Result Open(byte[] filename, out IntPtr db, int flags, IntPtr zvfs);

我在哪里使用:

SQLite.UAP.2015, Version=3.8.10

更多补充:

我已经测试了这个库 https://www.nuget.org/packages/SQLitePortable/ 并且我完成了同样的错误,所以它是内部的。

这就是路的尽头,有什么帮助吗?

【问题讨论】:

    标签: windows sqlite iot


    【解决方案1】:

    由于您要求实现 RaspberryPi 3 Windows 10 IoT SQLite,以下是我为其工作所遵循的步骤:(Visual Studio 2015 社区)

    1. 从 sqlite 页面下载:.vsix package for Universal Windows Platform
    2. 从下载文件夹安装包
    3. 在 Visual Studio 中转到工具->NuGet 包管理器->包管理器 控制台并输入:Install-Package SQLite.Net-PCL
    4. 添加所需的引用(鼠标右键 -> 添加引用 -> 通用 Windows -> 扩展)

    这里我选择以下:

    • Microsoft Visual C++ 2013 Runtime Package for Windows Universal
    • 适用于通用 Windows 平台的 SQLite
    • 适用于通用 Windows 平台应用程序的 Visual C++ 2015 运行时
    • 适用于 UWP 的 Windows IoT 扩展(因为我使用带有 GPIO 的 RPi 3 引脚)

    基本上我关注chrisbriggsy steps 并且不得不添加更多资源,因为 SQLite 不起作用

    【讨论】:

    • '很久以前'我做了这篇非常完整的文章expediteapps.com/blog/storing-data-with-windows-10-iot我真的深入研究了它的可能性,如果它没有改变,目前无法直接使用来自的数据库SDCard,这是我的问题。
    • 我真的很喜欢你的文章 - 以防任何人仍然难以创建它:path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite"); conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path); conn.CreateTable&lt;Message&gt;();
    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2016-10-10
    • 1970-01-01
    相关资源
    最近更新 更多