3

我正在開發一個應用程序,它具有一些媒體文件,如圖像/音頻/視頻剪輯。我想將這些媒體文件作爲blob插入到我的C#/ XAML windows store應用程序的SQLite中。我找不到任何顯示blob數據類型的示例。我怎樣才能做到這一點 ? Here你可以看到SQLite支持blob數據類型如何在SQLite中插入blob在Windows應用商店開發的C#/ XAML

回答

1

不知道你正在使用哪個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 
相關問題