![](/img/trans.png)
[英]How to get list of images from azure blob container and change them into thumbnail in c#?
[英]Images Created with C# - How to Insert them in BLOB via SQL
假設我捕獲了一個屏幕截圖。 這是我的代碼
int sWidth = 1600, sHeight = 1200;
Bitmap B_M_P = Bitmap(sWidth, sHeight);
Graphics gfx = Graphics.FromImage((Image)B_M_P);
gfx.CopyFromScreen(0, 0, 0, 0, new Size(screenWidth, screenHeight));
B_M_P.Save("img.jpg", ImageFormat.Jpeg);
而不是將其保存到圖像,我想能夠將其發送到我的SQL或MySQL並將它們存儲為BLOB。
我也知道LINQ
來查詢數據庫。 我不知道是中間部分。
Data Type
將用於在BLOB列中進行插入,我猜這將是Byte[]
嗎? 如果它是一個“字節”,則轉換非常容易。
ImageConverter imgc = new ImageConverter();
Byte[] temp = (byte[])imgc.ConvertTo(B_M_P,typeof(byte[]));
這樣以后我就可以准備查詢了
"INSERT INTO EMPLOYEE (pic) VALUES ('"+temp+"');"
你是正確的,你只需要把它變成一個字節數組。 表的數據類型應為VarBinary(max) 。
請注意,這里有一個Image數據類型,但是在將來的Microsoft SQL Server版本中將刪除該數據類型,因此Microsoft建議每個人都切換到VarBinary以便將來兼容。
BLOB和VarBinary(max)是同一件事。 從了解SQL Server 2005中的VARCHAR(MAX)
為了解決此問題,Microsoft在SQL Server 2005中引入了VARCHAR(MAX),NVARCHAR(MAX)和VARBINARY(MAX)數據類型。這些數據類型可以容納相同數量的數據,BLOB可以容納(2 GB),它們分別是存儲在用於其他數據類型的相同類型的數據頁中。 當MAX數據類型中的數據超過8 KB時,將使用溢出頁面。 SQL Server 2005自動為頁面分配一個溢出指示器,並且知道如何像處理其他數據類型一樣操作數據行。 您可以在存儲過程或函數中聲明MAX數據類型的變量,甚至將它們作為變量傳遞。 您也可以在字符串函數中使用它們。
Microsoft建議在SQL Server 2005中使用MAX數據類型代替BLOB。實際上,在SQL Server的將來版本中不建議使用BLOB。
我在頂部提到的Image
數據類型是舊式BLOB數據類型的示例。
這是代碼應為的示例
using(var cmd = SqlCommand("INSERT INTO EMPLOYEE (pic) VALUES (@pic);", connection)
{
cmd.Parameters.Add("@pic", temp);
cmd.ExecuteNonQuery();
}
但是,如果您正在使用大文件,則有些問題,請參見此SO解答及其鏈接,以深入了解如何在數據庫中存儲大數據對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.