我应该使用什么变量类型来保存图像?

时间:2010-02-02 22:15:20

标签: c# sql types

我将把图像保存到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; }
    }
}

请问任何指导? :)

4 个答案:

答案 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服务器上的负载/流量。