Какой тип переменной следует использовать для сохранения изображения?

Я собираюсь сохранять изображения в базу данных 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 ответов


на стороне SQL Server обязательно используйте VARBINARY(MAX) type-это двоичный, это до 2 ГБ в размере, это быстро, это идеально подходит для этого случая использования. До среднего размера изображения около 1 МБ, это, вероятно, ваш лучший выбор-даже лучше, чем с помощью SQL Server 2008 FILESTREAM атрибут (что отлично, если у вас есть много действительно очень больших изображений, больше 1 Мб на регулярной основе; здесь двоичный файл сам хранится в файловой системе серверной машины в базе данных контроль.)

в вашем .NET-коде вы, вероятно, захотите использовать Image или производные классы-в конечном счете, вам придется передавать эти байты на SQL Server так или иначе, но вам не нужно использовать массив байтов с самого начала - все связанные с картинками типы в .NET предлагают некоторую потоковую поддержку.



У вас это правильно-используйте массив байтов в своем классе. Для изображений менее 1 МБ используйте столбец varbinary(max) в SQL server. Если размер образов превышает 1 МБ и используется SQL Server 2008, рассмотрите возможность использования столбца FILESTREAM.

вы можете использовать диаграмму на эта страница MSDN для ссылки на сопоставления типов данных C# / Sql.


рассмотрите возможность хранения изображения в виде файла, а затем ссылаться на имя файла в БД, а не на сами двоичные данные. Это имеет несколько преимуществ, таких как возможность хранения изображений на других серверах и снижение нагрузки/трафика на SQL server.