Какой тип переменной следует использовать для сохранения изображения?
Я собираюсь сохранять изображения в базу данных 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.