使用C#创建的映像 – 如何通过SQL将它们插入BLOB中
假设我捕获了一个屏幕截图。 有我的代码
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
查询数据库。 我不知道的是中间部分。
如果是’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答案及其链接,以深入了解如何在数据库中存储大型数据对象。
上述就是C#学习教程:使用C#创建的映像 – 如何通过SQL将它们插入BLOB中分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1027246.html