我将把图像保存到SQL数据库中(不知道在那里使用什么类型),我将查询数据库中的学生肖像照片。
我应该使用哪种变量类型来存储此图像?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Nana_s_Student_Gradebook
{
class Student
{
public string name { get; set; }
public string lastName { get; set; }
public byte[] picture { get; set; }
public DateTime dateOfBirth { get; set; }
}
}
请问任何指导? :)
答案 0 :(得分:8)
在SQL Server方面,无论如何,使用VARBINARY(MAX)
类型 - 它的二进制文件,它的大小最多为2 GB,速度很快,非常适合该用例。平均图像大小约为1 MB,这可能是您最好的选择 - 甚至比使用SQL Server 2008 FILESTREAM
属性更好(如果您有大量非常大的图像,大于1 MB,那就太棒了定期;这里,二进制文件本身存储在数据库控制下的服务器机器的文件系统中。)
在您的.NET代码中,您可能希望使用Image
或派生类 - 最终,您必须以这种或那种方式将这些字节流式传输到SQL Server,但是您不需要需要从头开始使用字节数组 - .NET中所有与图片相关的类型都提供某种流式支持。
答案 1 :(得分:0)
答案 2 :(得分:0)
你说得对 - 在你的班级中使用一个字节数组。对于小于1 MB的映像,请在SQL Server中使用varbinary(max)列。如果图像超过1 MB并且您使用的是SQL Server 2008,请考虑使用FILESTREAM列。
您可以使用this MSDN page上的图表来引用C#/ Sql数据类型映射。
答案 3 :(得分:0)
考虑将图像存储为文件,然后在DB中引用文件名,而不是二进制数据本身。这有几个优点,例如允许您将图像存储在其他服务器上并减少SQL服务器上的负载/流量。