2011-09-20 101 views
1

在知道該字體可以從不同環境(Windows/Linux)和語言(Java/PHP/Java)中訪問時,將字體插入SQL Server數據庫的最佳方式是:的Python/C#)?在SQL Server數據庫中保存字體的最佳方式

我有,我應該從C#WinForms應用程序中插入字體,並從Java應用程序這個字體的情況下,目前我插入Font.NameFont.StyleFont.Size並從Java我檢索使用Font.Decode();方法字體。

它在很多情況下都能正常工作,但我認爲將字體文件傳輸到數據庫並從數據庫獲取字體文件.ttf可能更好,方法是關聯自定義構造的字符串以識別字體及其關聯文件。

例如:Font NameFont SizeFont Style + Font File,因爲有時該字體未安裝或具有其他系統上使用不同的名稱(字體是非常重要的在我的情況)。

+2

字體文件就像任何其他二進制文件一樣 - 只是像其他任何二進制文件一樣存儲它(這裏有**噸的問題和其他地方的文章顯示如何做到這一點非常詳細)。 **但是:**我不確定這是一個好主意 - 畢竟,在使用目標系統前,經常需要在目標系統上安裝一個字體**,所以我不確定它是否有幫助你的Java應用程序只抓取文件 - 我認爲這不足以使該字體在該系統上工作.... –

+0

@marc_s im確定字體文件,這不是我關心的問題,我關心的是應該我還是應該不,我澄清了爲什麼!我需要的是一個想法或者如果某人已經提出瞭解決方案如何告訴Java和其他使用的字體。 – Burimi

+0

@marc_s:我相信Java的圖形庫可以從文件系統加載字體文件(或者更可能是這種情況下的字節流),然後在應用程序中通過Font Font.awt.Font.createFont (int fontFormat,InputStream in);'或'Font java.awt.Font.createFont(int fontFormat,File fontFile);'我不確定其他語言。 –

回答

2

微軟研究院有一篇名爲To Blob or Not To Blob的非常好的論文。

他們大量的性能測試和分析後得出的結論是這樣的:

  • 如果您的圖片或文檔通常低於在大小256K,將它們存儲在一個數據庫VARBINARY列更有效

  • 如果您的圖片或文檔通常大小超過1 MB,將它們存儲在文件系統中更有效(與SQL Server 2008中的FILESTREAM屬性,他們仍然事務控制,數據庫的一部分下)

  • 在這兩個之間,這取決於你的使用有點難以取捨的

如果你決定把你的照片到SQL Server表,我會強烈建議使用一個單獨的表用於存儲那些圖片 - 不要將員工照片存儲在員工表中 - 將他們保存在單獨的表格中。這樣一來,假設您並不總是需要選擇員工照片作爲查詢的一部分,那麼員工表可以保持精簡併且意味着非常高效。

對於文件組,請查看Files and Filegroup Architecture的介紹。基本上,您可以從一開始就爲大數據結構創建一個單獨的文件組的數據庫,或者稍後添加一個額外的文件組。我們稱之爲「LARGE_DATA」。

現在,只要你有一個新的表來創建一個需要存儲VARCHAR(MAX)或VARBINARY(MAX)列,可以爲大型數據指定該文件組:

CREATE TABLE dbo.YourTable 
    (....... define the fields here ......) 
    ON Data     -- the basic "Data" filegroup for the regular data 
    TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data 

時退房MSDN介紹文件組,並玩弄它!

+0

好的事情+1我會分析它。 – Burimi

相關問題