SQL Server fournit un type de données spécial : image, qui est un type contenant des données binaires. L'exemple ci-dessous vous montre comment mettre du texte ou des photos dans une base de données. Dans cet article, nous allons voir comment stocker et lire des images dans SQL Server.
1. Créez une table :
Créez une table avec cette structure dans SQL SERVER :
2. Stockez les images dans la base de données SQL SERVER
Afin de les stocker dans la table, vous devez d'abord les télécharger sur votre serveur WEB. Vous pouvez développer un formulaire Web, qui est utilisé pour importer des images du contrôle Web TextBox dans le client. . Votre serveur WEB apparaît. Définissez votre propriété encType sur : myltipart/formdata.
Stream imgdatastream = File1.PostedFile.InputStream;
int imgdatalen = File1.PostedFile.ContentLength;
string imgtype=
File1.PostedFile.ContentType
; octet[imgdatalen];
int n = imgdatastream.Read(imgdata, 0, imgdatalen);
string connstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"]
;
Commande SqlCommand = new SqlCommand
("INSERT INTO ImageStore(imgtitle, imgtype, imgdata)
VALUES (@imgtitle, @imgtype, @imgdata)", connexion
SqlParameter paramTitle = new SqlParameter
("@imgtitle", SqlDbType.VarChar, 50) ;
paramTitle.Value
= imgtitle;
command.Parameters.Add(
paramTitle);
SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image )
; new SqlParameter( "@imgtype", SqlDbType.VarChar, 50 );
paramType.Value = imgtype;
command.Parameters.Add( paramType )
;
int numRowsAffected = command.ExecuteNonQuery()
; ;
3. Reprenons la lecture de la base de données.
Lisons maintenant les données que nous avons saisies à partir de SQL Server. Nous afficherons l'image sur votre navigateur, vous pouvez également la stocker à l'emplacement de votre choix.
private void Page_Load (expéditeur d'objet, 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)
; new SqlCommand(sql, connection);
Open()
;
(dr.Read())
{
Response.ContentType = dr["imgtype"].ToString();
Response.BinaryWrite( (byte[]) dr["imgdata"]
}
connection.Close(
}
Notez-le est Response.BinaryWrite au lieu de Response.Write
Voici un programme de stockage et de lecture pour C# Winform. Veuillez comparer les différences vous-même ! (Pour plus de commodité, j'ai simplifié les champs de la base de données en deux : imgtitle et imgdata.
using System ;
utilisant System.Drawing ;
utilisant System.Collections ;
utilisant System.ComponentModel ;
utilisant System.Windows.Forms ;
utilisant System. .Data ;
utilisant System.IO ;
utilisant System.Data.SqlClient ;
espace de noms WindowsApplication21
{
///
/// Description récapitulative de Form1
///
classe publique Form1 : System.Windows.Forms.Form
{
private System.Windows .Forms. Bouton bouton1 ;
///
/// Variables de concepteur requises
///
private System.ComponentModel.Container components = null;
private string ConnectionString = "Integrated Security=SSPI;Initial Catalog=;DataSource
=localhost;"
;
privé SqlCommand cmd = null ;
privé System.Windows.Forms.Button bouton2 ;
privé System.Windows.Forms.PictureBox pic1 ;
privé
System.Windows.Forms.OpenFileDialog openFileDialog1
; Label label2;
private string nowId=null;
public Form1()
{
//
//
Requis pour la prise en charge du concepteur Windows Forms
//
InitializeComponent();
conn
= new SqlConnection(ConnectionString);
Appel InitializeComponent
//
}
///
/// Nettoie toutes les ressources utilisées.
///
remplacement protégé void Dispose( bool disposing )
{
if (conn.State == ConnectionState.Open)
conn.Close
();
if( disposing )
{
if (components != null)
{
composants.Dispose()
;
base.Dispose( disposing );
}
#region Code généré par le concepteur de formulaires Windows
///
/// Le concepteur prend en charge la méthode requise - n'utilisez pas l'éditeur de code pour modifier
/// le contenu de cette méthode.
///
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();
this.SuspendLayout
();
.Location = nouveau System.Drawing.Point(0, 40);
this.button1.Name
= "button1";
this.button1.Size = new System.Drawing.Size(264, 48);
;
this.button1.Text = "Ajouter une nouvelle image";
this.button1.Click
+=
new System.EventHandler(this.button1_Click
)
; 280, 8);
this.pic1.Name = "pic1";
this.pic1.Size = new System.Drawing.Size(344, 264);
this.pic1.TabIndex
= 3
; //
bouton2
//
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 = "Restaurer l'image de la base de données";
this.button2.Click
+
=
new System.EventHandler(this.button2_Click)
;
.Filter = ""Fichiers image (*.jpg, *.bmp, *.gif)|*.jpg|*.bmp|*.gif"";
//
// label2
//
this.label2.Location = nouveau système .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.Controls.AddRange(new System.Windows.Forms. Control[ ] {
this.label2,
this.button2,
this.pic1,
this.button1});
this.Name = "Form1"
; this.Text = "
This.Load += new System.EventHandler(this. Form1_Load) ;
this.ResumeLayout(false);
}
#endregion
///
/// Le point d'entrée principal de l'application.
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
private
void button1_Click(objet expéditeur, System.EventArgs e)