SQL Server предоставляет специальный тип данных: изображение, который представляет собой тип, содержащий двоичные данные. В приведенном ниже примере показано, как поместить текст или фотографии в базу данных. В этой статье мы увидим, как хранить и читать изображения в SQL Server.
1. Создайте таблицу.
Создайте таблицу с такой структурой в SQL SERVER:
2. Сохранение изображений в базе данных SQL SERVER.
Чтобы сохранить их в таблице, необходимо сначала загрузить их на свой WEB-сервер. Вы можете разработать веб-форму, которая будет использоваться для импорта изображений из веб-элемента управления TextBox в клиенте. . Ваш веб-сервер появится. Установите для свойства encType значение: myltipart/formdata.Stream
imgdatastream = File1.PostedFile.InputStream;
int imgdatalen = File1.PostedFile.ContentLength;
string imgtype = File1.PostedFile.ContentType;
string imgtitle = TextBox1.Text
[] imgdata = new; byte[imgdatalen];
int n = imgdatastream.Read(imgdata, 0, imgdatalen);
string connstr = ((NameValueCollection)Context.GetConfig("appSettings"))["connstr"];
соединение SqlConnection = new SqlConnection(connstr);
Команда SqlCommand = новая SqlCommand
(«INSERT INTO ImageStore(imgtitle, imgtype, imgdata)
VALUES (@imgtitle, @imgtype, @imgdata)», Connection );
SqlParameter paramTitle = new SqlParameter
(«@imgtitle», SqlDbType.VarChar, 50 ) ;
paramTitle.Value
=
imgtitle
;
новый SqlParameter(
«
@imgtype», SqlDbType.VarChar, 50);
paramType.Value
= imgtype
;
3.
Возобновим чтение из базы данных.
Теперь давайте прочитаем данные, которые мы ввели с SQL-сервера! Мы выведем изображение в ваш браузер, вы также можете сохранить его в нужном месте.
Private void Page_Load(отправитель объекта, System.EventArgs e)
{
string imgid =Request.QueryString
["imgid"];
string connstr=((NameValueCollection)
Context.GetConfig("appSettings"))["connstr"];
"SELECT imgdata, imgtype FROM ImageStore WHERE id = " + imgid;
SqlConnection Connection = new SqlConnection (connstr);
команда
SqlCommand = new SqlCommand (sql, Connection);
SqlDataReader
dr = command.ExecuteReader ();
(dr.Read())
{
Response.ContentType = dr["imgtype"
].ToString();
Response.BinaryWrite
( (byte[]) dr["imgdata"]
}
Connection.Close();
это Response.BinaryWrite вместо Response.Write.
Вот программа хранения и чтения для C# Winform. Сравните различия сами! (Для удобства я упростил поля базы данных на два: imgtitle и imgdata.
с помощью System;
с помощью System.Drawing;
с помощью System.Collections;
с помощью System.ComponentModel;
с помощью System.Windows.Forms;
с помощью System). .Data;
using System.IO;
using System.Data.SqlClient;
пространство имен WindowsApplication21
{
///
/// Краткое описание Form1
///
public class Form1 : System.Windows.Forms.Form
{
Private System.Windows .Forms. Button button1;
///
/// Обязательные переменные конструктора
///
Private System.ComponentModel.ContainerComponents = null;
Private String ConnectionString = "Integrated Security=SSPI;Initial Catalog=;DataSource=localhost;" ;
Private SqlConnection conn = null
;;
частный SqlCommand = null;
частный System.Windows.Forms.Button button2;
частный
System.Windows.Forms.OpenFileDialog openFileDialog1;
частный
System.Windows.Forms. Label label2;
Private string nowId=null;
public Form1()
{
//
// Требуется для поддержки конструктора Windows Forms
//
InitializeComponent();
conn = new SqlConnection(ConnectionString);
//
/ / TODO: добавьте любой код конструктора после Вызов InitializeComponent
//
}
///
/// Очистите все используемые ресурсы.
///
защищенное переопределение void Dispose( bool dispositing )
{
if (conn.State == ConnectionState.Open)
conn.Close();
if( dispositing )
{
if (comComponents != null)
{
Components.Dispose()
} }
;
base.Dispose( dispositing );
}
#region Код, сгенерированный конструктором форм Windows
///
/// Конструктор поддерживает требуемый метод — не используйте редактор кода для изменения
/// содержимого этого метода.
///
частный void InitializeComponent()
{
this.button1 = новый System.Windows.Forms.Button();
this.pic1 = новый System.Windows.Forms.PictureBox();
this.button2 = новый System.Windows.Forms. Button();
this.openFileDialog1 = новый System.Windows.Forms.OpenFileDialog();
this.label2 = новый System.Windows.Forms.Label();
this.SuspendLayout();
//
// button1
//
this.button1; .Location = новый System.Drawing.Point(0, 40);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(264, 48);
this.button1.TabIndex = 0 ;
this.button1.Text = "Добавить новое изображение";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// pic1
//
this.pic1.Location = new System.Drawing.Point ( 280, 8);
this.pic1.Name = "pic1";
this.pic1.Size = новый System.Drawing.Size(344, 264);
this.pic1.TabIndex = 3;
this.pic1.TabStop = false
; //
button2
//
this.button2.Location = new System.Drawing.Point(0, 104);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(264, 40); );
this.button2.TabIndex = 4;
this.button2.Text = "Восстановить изображение из базы данных";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// openFileDialog1
//
this .openFileDialog1)
;.Filter = ""Файлы изображений (*.jpg, *.bmp, *.gif)|*.jpg|*.bmp|*.gif"";
//
// label2
//
this.label2.Location = новая система .Drawing.Point(0, 152);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(264, 48);
this.label2.TabIndex
= 5
; Form1
//
this.AutoScaleBaseSize = новый System.Drawing.Size(6, 14);
this.ClientSize = новый System.Drawing.Size(632, 273);
this.Controls.AddRange(new System.Windows.Forms. Control[ ] {
this.label2,
this.button2,
this.pic1,
this.button1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this. Form1_Load) ;
this.ResumeLayout(false);
}
#endregion
///
/// Основная точка входа приложения.
///
[STAThread]
static void Main()
{
Application.Run(new Form1()
}
Private void button1_Click(отправитель объекта, System.EventArgs e)