c# - 如何在用 c#/XAML 开发的 Windows 商店应用程序中的 SQLite 中插入 blob

标签 c# windows-8 windows-runtime microsoft-metro windows-store-apps

我正在开发一个应用程序,其中包含一些媒体文件,例如图像/音频/视频剪辑。我想将这些媒体文件作为 blob 插入到我的 C#/XAML Windows 应用商店应用程序的 SQLite 中。我找不到任何显示 blob 数据类型的示例。我怎样才能做到这一点 ? Here你可以看到 SQLite 支持 blob 数据类型

最佳答案

不确定您使用的是哪个 API,但这是 SQLite-Net 的单元测试.它所做的只是创建测试对象并用一些数据填充 blob(字节数组)。然后将保存的对象与原始对象进行比较。

public class BlobTest
{
    public int Id { get; set; }
    public byte[] Blob { get; set; }
}

[TestMethod]
public void TestSaveBlob()
{
    var conn = new SQLiteConnection("path_to_db");
    conn.CreateTable<BlobTest>();

    var expected = new BlobTest() { Id = 1 };
    expected.Blob = new byte[10];
    for (int idx = 0; idx < expected.Blob.Length; idx++)
    {
        expected.Blob[idx] = (byte)(idx + 1);
    }

    conn.Insert(expected);

    var actual = conn.Table<BlobTest>().FirstOrDefault();
    Assert.IsTrue(actual.Id != 0, string.Format("actual.Id == '{0}', expected non-zero", actual.Id));
    Assert.IsTrue(actual.Id == expected.Id, string.Format("actual.Id == '{0}', expected '{1}'", actual.Id, expected.Id));
    Assert.IsTrue(actual.Blob != null, string.Format("actual.Blob == '{0}', expected non-null", actual.Blob));

    for (int idx = 0; idx < expected.Blob.Length; idx++)
    {
        Assert.IsTrue(expected.Blob[idx] == actual.Blob[idx], string.Format("actual.Blob[{0}] == '{1}', expected '{2}'", idx, actual.Blob[idx], expected.Blob[idx]));
    }
}

只是为了看看数据库中有什么,我从 SQLite 命令行运行了这个:

select id, hex(blob) from blobtest;

结果:

1|0102030405060708090A

关于c# - 如何在用 c#/XAML 开发的 Windows 商店应用程序中的 SQLite 中插入 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12894016/

相关文章:

javascript - 如果音频停止,如何取消选中复选框?

c# - Windows 应用商店应用程序 - 如何在搜索 super 按钮文本框中获取水印

c#-4.0 - 如何从 BitmapImage 创建 WriteableBitmap?

c# - Unicode 字符串到二进制字符串和二进制字符串到 unicode c#

c# - Xamarin Async ViewDidAppear 在 ViewDidLoad 期间调用

c# - Windows 商店应用程序中是否有全局异常处理程序?

windows-runtime - .winmd 文件与平台无关吗?

c# - 如何根据 Microsoft.SqlServer.Management.Smo.Transfer 中的架构名称复制表

c# - 在 .Net 中检索 Firebird ODS 版本

windows - Windows 8 应用程序中 Numericbox 的替代品?