In diesem Artikel wird zusammengefasst, wie Bilder in SQL Server gespeichert und in .Net WinForm und .Net WebForm (asp.net) gelesen und angezeigt werden.
1. Verwenden Sie asp.net, um das Bild hochzuladen und in SQL Server zu speichern, lesen Sie es dann von SQL Server und zeigen Sie es an:
1) Hochladen und auf SQL Server speichern
Datenbankstruktur
Tabellentest erstellen
{
Identität(1,1),
FImage-Bild
}
Verwandte gespeicherte Prozeduren
Proc UpdateImage erstellen
(
@UpdateImage Bild
)
Als
In Test(FImage)-Werte einfügen(@UpdateImage)
GEHEN
Fügen Sie der Datei UpPhoto.aspx Folgendes hinzu:
<input id="UpPhoto" name="UpPhoto" runat="server" type="file">
<asp:Button id="btnAdd" name="btnAdd" runat="server" Text="Upload"></asp:Button>
Fügen Sie dann den Click-Event-Verarbeitungscode der Schaltfläche „btnAdd“ in der Code-Behind-Datei UpPhoto.aspx.cs hinzu:
private void btnAdd_Click(object sender, System.EventArgs e)
{
// Holen Sie sich das Bild und konvertieren Sie das Bild in Byte[]
HttpPostedFile upPhoto=UpPhoto.PostedFile;
int upPhotoLength=upPhoto.ContentLength;
byte[] PhotoArray=neues Byte[upPhotoLength];
Stream PhotoStream=upPhoto.InputStream;
PhotoStream.Read(PhotoArray,0,upPhotoLength);
//Mit Datenbank verbinden
SqlConnection conn=new SqlConnection();
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";
SqlCommand cmd=new SqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=PhotoArray;
//Wenn Sie Bilder hinzufügen möchten, ohne gespeicherte Prozeduren zu verwenden, ändern Sie die obigen vier Codezeilen wie folgt:
//string strSql="In Test(FImage)-Werte einfügen(@FImage)";
//SqlCommand cmd=new SqlCommand(strSql,conn);
//cmd.Parameters.Add("@FImage",SqlDbType.Image);
//cmd.Parameters["@FImage"].Value=PhotoArray;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
2) Vom SQL Server lesen und den folgenden Code an der Stelle hinzufügen, an der das Bild angezeigt werden soll:
<asp:image id="imgPhoto" runat="server" ImageUrl="ShowPhoto.aspx"></asp:image>
ShowPhoto.aspx-Textcode:
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
SqlConnection conn=new SqlConnection()
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";
string strSql="select * from test where id=2";//Hier wird davon ausgegangen, dass das Bild mit der ID 2 erhalten wird
SqlCommand cmd=new SqlCommand(strSql,conn);
conn.Open();
SqlDataReader read=cmd.ExecuteReader();
Reader.Read();
Response.ContentType="application/octet-stream";
Response.BinaryWrite((Byte[])reader["FImage"]);
Response.End();
Reader.Close();
}
}
2. Speichern Sie das Bild auf SQL Server in WinForm, lesen Sie es von SQL Server und zeigen Sie es in der Picturebox an
1), in SQL Server speichern
Die Datenbankstruktur und die verwendeten gespeicherten Prozeduren sind dieselben wie oben. Fügen Sie dem Formular zunächst ein OpenFileDialog-Steuerelement hinzu und nennen Sie es ofdSelectPic.
Fügen Sie dann dem Formular eine Schaltfläche zum Öffnen einer Datei hinzu und fügen Sie den folgenden Klickereigniscode hinzu:
Stream ms;
byte[] picbyte;
//ofdSelectPic.ShowDialog();
if (ofdSelectPic.ShowDialog()==DialogResult.OK)
{
if ((ms=ofdSelectPic.OpenFile())!=null)
{
//MessageBox.Show("ok");
picbyte=neues Byte[ms.Länge];
ms.Position=0;
ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
//MessageBox.Show("Lesen abgeschlossen!");
//Mit Datenbank verbinden
SqlConnection conn=new SqlConnection();
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";
SqlCommand cmd=new SqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=picbyte;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
ms.Close();
}
}
2) Lesen und Anzeigen in der Picturebox. Fügen Sie zunächst eine Picturebox mit dem Namen ptbShow hinzu
Fügen Sie dann eine Schaltfläche und das folgende Antwortereignis hinzu:
SqlConnection conn=new SqlConnection();
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";
string strSql="wähle FImage aus dem Test aus, wobei die ID=1 ist";
SqlCommand cmd=new SqlCommand(strSql,conn);
conn.Open();
SqlDataReader read=cmd.ExecuteReader();
Reader.Read();
MemoryStream ms=new MemoryStream((byte[])reader["FImage"])
;
Reader.Close();
conn.Close();
ptbShow.Image=image;
Ursprüngliche Adresse: http://stewen.cnblogs.com/archive/2005/12/20/300587.aspx