O SQL Server fornece um tipo de dados especial: imagem, que é um tipo que contém dados binários. O exemplo abaixo mostra como colocar texto ou fotos em um banco de dados. Neste artigo veremos como armazenar e ler imagens no SQL Server.
1. Crie uma tabela:
Crie uma tabela com esta estrutura no SQL SERVER:
2. Armazene as imagens no banco de dados SQL SERVER
Para armazená-las na tabela, você deve primeiro carregá-las em seu servidor WEB. Você pode desenvolver um formulário web, que é usado para importar imagens do controle web TextBox no cliente. . Seu servidor WEB aparece. Defina sua propriedade encType como: myltipart/formdata.
Stream
imgdatastream
=
File1.PostedFile.InputStream
; byte[
imgdatalen
]
;
Comando SqlCommand = novo SqlCommand
("INSERT INTO ImageStore (imgtitle, imgtype, imgdata)
VALUES (@imgtitle, @imgtype, @imgdata)", conexão
SqlParameter paramTitle = new SqlParameter
("@imgtitle", SqlDbType.VarChar, 50 ) ;
paramTitle.Value
=
imgtitle;
comando.Parameters.Add(
paramTitle
);
new SqlParameter(
“@imgtype”, SqlDbType.VarChar, 50);
paramType.Value
=
imgtype
;
;
3. Retomar a leitura do banco de dados.
Agora vamos ler os dados que colocamos no SQL Server. Iremos enviar a imagem para o seu navegador, você também pode armazená-la no local desejado.
private void Page_Load(objeto remetente, System.EventArgs e)
{
string
imgid =Request.QueryString["imgid"
]
;
"SELECIONE imgdata, imgtype FROM ImageStoreWHERE
id = " + imgid;
conexão
SqlConnection
= new SqlConnection (connstr)
;
(dr.Read(
))
{
Response.ContentType = dr["imgtype"].
ToString
(
)
;
é Response.BinaryWrite em vez de Response.Write.
Aqui está um programa de armazenamento e leitura para C# Winform. Por favor, compare as diferenças você mesmo (por conveniência, simplifiquei os campos do banco de dados em dois: imgtitle e imgdata.
usando System;
usando System.Drawing;
usando System.Collections;
usando System.ComponentModel;
usando System.Windows.Forms;
usando System. .Data;
using System.IO;
using System.Data.SqlClient;
namespace WindowsApplication21
{
///
/// Descrição resumida do Form1
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows .Forms. Button button1;
///
/// Variáveis de designer obrigatórias
///
private System.ComponentModel.Container componentes = null
string privada ConnectionString=
"Integrated Security=SSPI;Initial Catalog=;DataSource=localhost;"
;
private SqlCommand cmd = null;
private System.Windows.Forms.Button button2;
private
System.Windows.Forms.PictureBox
pic1
; Label label2;
private string nowId=null;
publicForm1
(
)
{
//
// Necessário para suporte ao Windows Forms Designer
//
InitializeComponent()
;
Chamada InitializeComponent
//
}
///
/// Limpe todos os recursos em uso.
///
substituição protegida void Dispose( bool disposing )
{
if (conn.State == ConnectionState.Open)
conn.Close();
if( disposing )
{
if (components != null)
{
components.Dispose()
} }
;
base.Dispose( disposing );
#regionCódigo
gerado pelo Windows Form Designer
///
/// O designer suporta o método necessário - não use o editor de código para modificar
/// o conteúdo deste método.
///
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.pic1 = new System.Windows.Forms.PictureBox()
; Button();
this.openFileDialog1 =new
System.Windows.Forms.OpenFileDialog();
this.label2
=
new
System.Windows.Forms.Label()
;
.Location = new System.Drawing.Point(0, 40);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(264, 48)
; ;
this.button1.Text = "Adicionar nova imagem";
this.button1.Click
+=
new System.EventHandler(this.button1_Click
)
; 280, 8);
this.pic1.Name = "pic1";
this.pic1.Size = new System.Drawing.Size(344,
264
)
;
//
button2
//
this.button2.Location = new System.Drawing.Point(0, 104);
this.button2.Name=
"button2";
);
this.button2.TabIndex = 4;
this.button2.Text = "Restaurar imagem do banco de dados";
this.button2.Click
+
= new System.EventHandler(this.button2_Click
)
;
.Filter = ""Arquivos de imagem (*.jpg, *.bmp, *.gif)|*.jpg|*.bmp|*
.gif
"
"
;
.Drawing.Point(0, 152);
this.label2.Name = "label2";
this.label2.Size
= new System.Drawing.Size(264, 48
)
;
Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(632, 273)
; ] {
this.label2,
this.button2,
this.pic1,
this.button1});
this.Name = "Form1";
this.Text = "Form1"
; ;
this.ResumeLayout(false);
}
#endregion
///
/// O ponto de entrada principal do aplicativo.
///
[STAThread]
static void Main()
{
Application.Run(new Form1()
}
private void button1_Click(object sender, System.EventArgs e)