Windows 10可移动存储SQLite数据库



我正在尝试创建一个外部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。是否有人从典型的本地文件夹中创建了数据库?

我在这里做的更多细节:数据记录器

当我完成时,我想在树莓派中实现,理论上,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 zffs);

我使用的位置:

SQLite.UAP.2015, Version=3.8.10

更多广告:

我已经测试了这个库https://www.nuget.org/packages/SQLitePortable/而我最后也犯了同样的错误,所以这是内部错误。

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

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

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

在这里我选择以下内容:

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

基本上,我遵循了chrisbriggsy的步骤,不得不添加更多的资源,因为SQLite无法正常工作

最新更新