Какой тип данных используется для сохранения изображения в базе данных - PullRequest
2 голосов
/ 10 марта 2012

Мне нужно вставить изображения, которые у меня есть локально, используя SQL.

Я делаю это следующим образом:

CREATE TABLE [dbo].[Table_1](
      [SelectedImages] [image] NOT NULL,
      [Path] [ntext] NOT NULL
)

to add an image, do this:

INSERT INTO [testing].[dbo].[Table_1]
           ([SelectedImages]
           ,[Path])
     VALUES
           ('D:\desktop\05022006\free_chart1.gif' ,'D:\desktop\05022006\free_chart1.gif' )

Проблема в том, что мне нужно получить изображение потом ...

Я использую элемент управления Telerik, показывающий изображение, хранящееся в виде двоичных данных в базе данных. И я не уверен, что тип "Изображение" является правильным, поскольку он не работает ...

                  <telerik:RadBinaryImage runat="server" ID="RadBinaryImage1" DataValue='<%#Eval("Photo") %>'
                        AutoAdjustImageControlSize="false" Width="90px" Height="110px" ToolTip='<%#Eval("ContactName", "Photo of {0}") %>'
                        AlternateText='<%#Eval("ContactName", "Photo of {0}") %>' />

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

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Вы можете хранить изображения в базе данных, используя тип изображения, определенный в вашем вопросе.Однако сначала вам нужно преобразовать изображение в байтовый массив.

string path = "D:\\desktop\\05022006\\free_chart1.gif"
using (System.IO.FileStream fstream = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
  // Create a buffer to hold the stream of bytes
  byte[] buffer = new byte[fstream.Length];
  // Read the bytes from this stream and put it into the image buffer
  fstream.Read(buffer, 0, (int)fstream.Length);
  fstream.Close();
  //now you can insert buffer into the database
}

Если вы хотите извлечь изображение из базы данных, вам необходимо преобразовать его обратно из байта [].

if (byteArray != null)
{
  if (byteArray.Length > 0)
  {
    // Create a new MemoryStream and write all the information from the byte array into the stream
    using (System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray, true))
    {
      ms.Write(byteArray, 0, byteArray.Length);

      // Use the MemoryStream to create the new BitMap object
      Bitmap photo = new Bitmap(ms);

      ms.Close();

      //now you can use photo
    }
  }
}
1 голос
/ 11 марта 2012

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

  1. Это зависит от ситуации и вашего звонка.

  2. Иногда просто сохранение URL изображения внутри поля VARCHAR достаточно 'C:/Data/UserName/uploads/myGuid+filename.jpg' & фактический файл присутствует на диске (управление транзакциями затруднено при таком подходе, но хорошо работает для небольших требований)

  3. Когда управление транзакциями является высшим приоритетом, вы можете хранить их в базе данных в поле VARBINARY (max) Хранение изображений в SQL Сервер
  4. Файловый поток SQL Server также является опцией с последней версией SQLServer, в которой файл хранится в файловой системе, управляемой базой данных. Обзор файлового потока SQL Server
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...