none
請問SQL可以用什麼方法存入圖片檔 RRS feed

  • 問題

  • 之前遇到這個問題,有人建議我用物件導向式的資料庫來做。

    之後我本來是想把圖檔轉換成二進位的文字來存進資料庫,但是可行性不高,不知道各位有何看法?

    謝謝

    2007年5月21日 下午 12:15

解答

  • 您好:
    其實 SQL Server 2005 的二進位資料欄位(binary(n)、varbinary(n)、varbinary(max)、image)可以儲存任何格式的檔案,比方說,圖檔、Microsoft Word 檔...等。個人覺得您所要考慮的是圖檔會有多大?如果圖檔都很大,那麼其所需的資料庫檔案空間自然也不小,您可以使用一比一的方式來大概地粗估一下圖檔的大小。例如,當圖檔為 1MB 時,儲存到 SQL Server 2005 的二進位資料欄位時,大概也是需要 1MB 的空間。

    至於如何將資料寫入二進位資料欄位,這當然需要撰寫程式碼。請自行參考市售的 VB 2005 / C# 2005 等程式書籍。

    參考書籍:
  • Visual Basic 2005檔案IO與資料存取秘訣
  • Visual C# 2005檔案IO與資料存取秘訣
  • ...
2007年5月21日 下午 02:01
版主
  • 小弟之前簡要的寫了一篇將圖檔轉入資料庫的blog

    是以SQL Server 2005來實作,貼出部分內容,也許您可以參考一下

     

    1. 建立 Image 欄位
       在 testDB 建立一個 ImportImage Table 並新增一個 image 欄位,資料型態為 Image

    2. BULK INSERT 圖檔語法

       INSERT INTO ImportImage
         SELECT * FROM OPENROWSET(
         BULK 'D:\d2.jpg', SINGLE_BLOB) AS x 

     

    http://blog.blueshop.com.tw/angi/archive/2006/11/12/44931.aspx

     

    2007年5月22日 上午 03:32
  • 所有回覆

    • 您好:
      其實 SQL Server 2005 的二進位資料欄位(binary(n)、varbinary(n)、varbinary(max)、image)可以儲存任何格式的檔案,比方說,圖檔、Microsoft Word 檔...等。個人覺得您所要考慮的是圖檔會有多大?如果圖檔都很大,那麼其所需的資料庫檔案空間自然也不小,您可以使用一比一的方式來大概地粗估一下圖檔的大小。例如,當圖檔為 1MB 時,儲存到 SQL Server 2005 的二進位資料欄位時,大概也是需要 1MB 的空間。

      至於如何將資料寫入二進位資料欄位,這當然需要撰寫程式碼。請自行參考市售的 VB 2005 / C# 2005 等程式書籍。

      參考書籍:
    • Visual Basic 2005檔案IO與資料存取秘訣
    • Visual C# 2005檔案IO與資料存取秘訣
    • ...
    2007年5月21日 下午 02:01
    版主
  • 小弟之前簡要的寫了一篇將圖檔轉入資料庫的blog

    是以SQL Server 2005來實作,貼出部分內容,也許您可以參考一下

     

    1. 建立 Image 欄位
       在 testDB 建立一個 ImportImage Table 並新增一個 image 欄位,資料型態為 Image

    2. BULK INSERT 圖檔語法

       INSERT INTO ImportImage
         SELECT * FROM OPENROWSET(
         BULK 'D:\d2.jpg', SINGLE_BLOB) AS x 

     

    http://blog.blueshop.com.tw/angi/archive/2006/11/12/44931.aspx

     

    2007年5月22日 上午 03:32