SQL Server stellt einen speziellen Datentyp bereit: Bild, ein Typ, der Binärdaten enthält. Das folgende Beispiel zeigt Ihnen, wie Sie Texte oder Fotos in eine Datenbank einfügen. In diesem Artikel erfahren Sie, wie Sie Bilder in SQL Server speichern und lesen.
1. Erstellen Sie eine Tabelle:
Erstellen Sie eine Tabelle mit dieser Struktur in SQL SERVER:
2. Speichern Sie Bilder in der SQL SERVER-Datenbank.
Um sie in der Tabelle zu speichern, müssen Sie sie zunächst auf Ihren WEB-Server hochladen. Sie können ein Webformular entwickeln, das zum Importieren von Bildern aus dem TextBox-Websteuerelement im Client verwendet wird . Ihr WEB-Server wird gestartet.
SetzenSie
Ihre encType-
Eigenschaftauf
:
myltipart/
formdata
byte[imgdatalen];
int n = imgdatastream.Read(imgdata, 0, imgdatalen);
string connstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"]
;
SqlCommand command = new SqlCommand
("INSERT INTO ImageStore(imgtitle, imgtype, imgdata)
VALUES (@imgtitle, @imgtype, @imgdata)", Connection );
SqlParameter paramTitle = new SqlParameter
("@imgtitle", SqlDbType.VarChar, 50 ) ;
paramTitle.Value
= imgtitle;
command.Parameters.Add(
paramTitle);
new
SqlParameter( "@imgdata", SqlDbType.Image )
;new SqlParameter( "@imgtype", SqlDbType.VarChar, 50 );
paramType.Add
( paramType )
;
int numRowsAffected = command.ExecuteNonQuery()
; 3.
Fahren Sie nunmit dem Lesen
der von uns eingegebenen Daten vom SQL Server fort. Sie können es auch an dem von Ihnen gewünschten Ort speichern.
private void Page_Load(object sender, System.EventArgs e)
{
string imgid =Request.QueryString
["imgid"];
string connstr=((NameValueCollection)
Context.GetConfig("appSettings"))["connstr"];
„
SELECT imgdata,
imgtype FROM ImageStoreWHERE
id
=“ + imgid
;
(dr.Read())
{
Response.ContentType = dr["imgtype
"].ToString();
Response.BinaryWrite
( (byte[]) dr["imgdata"]
}
Hinweis ist Response.BinaryWrite statt Response.Write
Hier ist ein Speicher- und Leseprogramm für C# Winform. Bitte vergleichen Sie die Unterschiede selbst! (Der Einfachheit halber habe ich die Datenbankfelder in zwei vereinfacht: imgtitle und imgdata.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System .Data;
using System.IO;
using System.Data.SqlClient;
namespace WindowsApplication21
{
///
/// Zusammenfassende Beschreibung von Form1
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows .Forms. Button button1;
///
/// Erforderliche Designervariablen
///
private
System.ComponentModel.Container Components = null;
private string ConnectionString = "Integrated Security=;DataSource=localhost;"
;
private SqlCommand = null;
private System.Windows.Forms.PictureBox
pic1;
private
string sql = null
; Label label2;
private string nowId=null;
publicForm1
()
{
//
// Erforderlich für Windows Forms Designer-Unterstützung
//
InitializeComponent
()
;
InitializeComponent-Aufruf
//
}
///
/// Bereinigen Sie alle verwendeten Ressourcen.
///
protected override void Dispose( bool disposing )
{
if (conn.State == ConnectionState.Open)
conn.Close
(
);
if
(components != null)
{
Components.Dispose()
;
base.Dispose( disposing );
}
#region Vom Windows Form Designer generierter Code
///
/// Der Designer unterstützt die erforderliche Methode – verwenden Sie nicht den Code-Editor, um
/// den Inhalt dieser Methode zu ändern.
///
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.pic1 = new System.Windows.Forms.PictureBox();
this.button2 = new System.Windows.Forms. Button();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.label2 = new System.Windows.Forms.Label();
//
//
button1
//
this.button1 .Location = new System.Drawing.Point(0, 40);
this.button1.Name
= "button1";
this.button1.Size = new System.Drawing.Size(264, 48);
;
this.button1.Text = "Neues
Bild hinzufügen";
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 = "Bild aus Datenbank wiederherstellen";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// openFileDialog1
//
this .openFileDialog1 .Filter = ""Bilddateien (*.jpg, *.bmp, *.gif)|*.jpg|*.bmp|*.gif""
//
// label2
//
this.label2.Location = neues System .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.Load += new System.EventHandler(this. Form1_Load) ;
this.ResumeLayout(false);
}
#endregion
///
/// Der Haupteinstiegspunkt der Anwendung.
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)