2014-01-29 71 views
0

我試圖將圖像添加到我的SQL Server數據庫,並使用Web服務在asp.net網站檢索它從SQL Server檢索圖像。添加和使用web服務

我不知道我需要什麼類型我的專欄(我看到一些例子說,它應該是VARBINARY(MAX))。

所以我需要在我的Web方法,以顯示在網站上的一個GridView形象的事,一旦它在數據庫中?

P.S.我在我的服務中使用數據集來填充適配器並將其返回到網站。

+0

如何將圖像數據發送到網絡服務?使用編碼字符串? –

+0

我不太明白你在問什麼,但我把圖像與sql string =「從圖片中選擇*」,它以二進制檢索名稱和圖片。 – dnisko

+0

從你如何讓一個GridView展開靜態圖像'something.jpg'開始?首先讓它工作,然後弄清楚如何使它顯示的圖像來自你的代碼(也許讓你的代碼返回'something.jpg'),然後找出如何從數據庫中獲取圖像。一步步。 –

回答

0

讓我們想象一下帽子,我們有使用列ID(int)和圖像(VARBINARY(MAX))的表。 要上傳圖片做到這一點:

byte[] bytes = File.ReadAllBytes("File path and name"); 
SqlConnection con = new SqlConnection("Connection string"); 
SqlCommand command = new SqlCommand("INSERT INTO [tablename]([id], [image]) VALUES(@id,@image)", con); 
command.Parameters.AddWithValue("@id", 1); 
command.Parameters.AddWithValue("@image", bytes); 

con.Open(); 
command.ExecuteNonQuery(); 
con.Close(); 

而且有你的圖像上傳到數據庫中。

要檢索創建一個字典,從數據庫中的數據:

Dictionary<int, byte[]> images = new Dictionary<int, byte[]>(); 
public Dictionary<int, byte[]> GetImages() 
{ 
    Dictionary<int, byte[]> data = new Dictionary<int, byte[]>(); 
    SqlConnection con = new SqlConnection("Your connection string"); 
    SqlCommand command = new SqlCommand("SELECT * FROM [tablename]", con); 
    con.Open(); 
    SqlDataReader sdr = command.ExecuteReader(); 
    while(sdr.Read()) 
    { 
     data.Add((int)sdr["id"], (byte[])sdr["image"]); 
    } 
    con.Close(); 
    return data; 
} 
+0

好吧,一旦它被上傳到數據庫中,如何在服務中創建一個Web方法,將返回的圖像和網站中的網景顯示出來呢? – dnisko

0

要使用的數據類型開始,我的確會選擇VARBINARY(MAX)。

一種經常使用的方法,以從數據庫中檢索的圖像,是由寫入圖像處理程序。圖像可以通過url從處理程序請求。因此,如果您的處理程序url是/images.ashx?id=1,它可以從第1行中獲取圖像。顯然,您不必使用id querystring參數,但這是我可以做的最直接的示例。

然後在你的數據集你可以返回的URL到圖像處理程序。

這是一個很好的教程,做這樣的事情,但使用一個aspx頁面,而不是一個處理程序:http://www.aspsnippets.com/Articles/Display-images-from-SQL-Server-Database-in-ASP.Net-GridView-control.aspx

0

我相信你可以使用接收的字節組從數據庫只需創建一個新的MemoryStream並使用此的MemoryStream加載位圖:

Dim mem As New IO.MemoryStream(thebyteArray) 
Dim img As System.Drawing.Bitmap = System.Drawing.Bitmap.FromStream(mem)