2009-11-19 10 views
1

在一個SqLite表中,我有一個BLOB列用於保存圖像(或者事實上是二進制數據)。該表是Documents。亞音速SqLite Blob類型的等效物?

奇怪的是,在Subsonic的ActiveRecord的Documents類中,該列的類型顯示爲STRING,這沒有意義。它應該是字節數組。對?

我在這裏錯過了什麼?如何在Subsonic中映射SqLite BLOB列?

回答

2

SQLite,不管你信不信,都沒有鍵入列。任何數據都可以存儲在任何列(INTEGER PK除外)中,而不管該列是如何聲明的。每列都有一個「親和性」,這就是報告給查詢列的數據類型的前端。在SQLite中,BLOB列的關聯性作爲TEXT返回。

你可以閱讀更多關於它here

+0

由於Subsonic將BLOB顯示爲STRING類型,是否意味着我必須將圖像保存爲文本數據。 並在出路,獲取該文本數據並將其轉換爲Byte數組ro? 此外,它意味着在SqLite中使用BLOB類型沒有意義。改爲使用STRING類型。對? – 2009-11-19 21:52:54

+1

不,你應該可以將BLOB保存到該列就好了。實際上,如果需要,您可以將BLOB保存到「定義」爲浮點的列。 SQLite不關心。這是我所知道的唯一一個數據庫(他們只知道一個*他們也知道,從我發佈的鏈接上的文章來看)。我不知道亞音速的任何事情 - 可能會感到困惑。但是你可以將BLOB數據存儲在那個明顯的TEXT列中。 – 2009-11-20 03:20:04

+1

這將工作,但我修改SQLite.ttinclude GetSysType方法包括blob類型。現在blob將被亞音速視爲byte []。摘錄如下: \t \t情況下, 「圖像」: \t \t案 「斑點」: \t \t案 「二進制」: \t \t案 「TINYINT」: \t \t案 「VARBINARY」: \t \t \t sysType =「byte []」; HTH,Pankaj – 2009-11-20 06:59:01