Windows 10 removableStorage SQLite数据库

时间:2015-06-25 16:12:52

标签: windows sqlite iot

我正在尝试创建一个外部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

    }

我正在桌面上测试,并返回CannotOpen。有没有人从典型的本地文件夹创建数据库?

我在此处所做的更多细节:datalogger

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

EDITION:更多分析:

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

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/并且我完成了相同的错误,所以它是内部的。

这里是道路的终点,有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

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

  1. 从sqlite页面下载.vsix package for Universal Windows Platform
  2. 从下载文件夹
  3. 安装软件包
  4. 在Visual Studio中,转到Tools-&gt; NuGet Package Manager-&gt; Package Manager 控制台并输入:Install-Package SQLite.Net-PCL
  5. 添加必需的参考文献(鼠标右键 - &gt;添加参考 - &gt; 通用Windows - &gt;扩展)
  6. 我在这里选择以下内容:

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

    基本上我跟着chrisbriggsy steps并且不得不添加更多资源,因为SQLite没有工作