Сохраните изображение в базе данных SQL Server CE - PullRequest
6 голосов
/ 14 апреля 2010

Кто-нибудь знает пример того, как сохранить изображение в базе данных SQL Server CE?

Каким типом данных должен быть столбец? (Я предполагаю, двоичный файл.)

Я использую Linq-To-Datasets. Можно ли использовать это, чтобы поместить изображение в базу данных и вытащить его позже?

Спасибо за любой совет.


Вот как я это сделал:

MemoryStream stream = new MemoryStream();
myBitmapImage.Save(stream, ImageFormat.Png);
myInsertLinqToDataSetRow.IMAGE_COLUMN = stream.ToArray();

Чтобы загрузить его снова, я сделал это:

MemoryStream stream = new MemoryStream(myLinqToDataSetRow.IMAGE_COLUMN);
myBitmapImage.SignatureImage = new Bitmap(stream);

Я нашел страницу в MSDN, в которой говорилось, что тип столбца «Изображение» исчезает и вам следует использовать varbinary (MAX). Макс не поддерживается в SQL Server CE, поэтому я сделал varbinary (8000).

ПОЗЖЕ ПРИМЕЧАНИЕ: хотя varbinary (max) не поддерживается в SQL Server CE. Varbinary (8000) недостаточно велик для многих изображений. В конце концов, я использовал тип Image, хотя он и считается устаревшим. Как только ms предложит разумную альтернативу на мобильной платформе, я рассмотрю возможность переключения.

Ответы [ 3 ]

5 голосов
/ 04 мая 2010

Почему вы не используете тип изображения? Здесь - описание типов, поддерживаемых сервером sql ce.

Изображение - двоичные данные переменной длины с максимальной длиной 2 ^ 30 - 1 (1 073 741 823) байта.

5 голосов
/ 14 апреля 2010

Вот статья MSDN, объясняющая, как:

http://support.microsoft.com/kb/318639

К сожалению, пример в VB, но я уверен, что вы можете понять, как это сделать.

Я бы сказал, что двоичный тип данных подходит для хранения изображений.

1 голос
/ 14 апреля 2010

Это не прямой ответ на ваш вопрос, но я успешно сохранил путь к файлу изображения (пример: C: \ images \ image1.png) в виде строкового значения в базе данных вместо необработанного изображения.

Одним из преимуществ этого является то, что он уменьшает размер базы данных.

Другой способ заключается в том, что несколько таблиц могут указывать на изображения без сохранения нескольких копий изображения.

...