Cet article résume comment stocker des images dans SQL Server, puis les lire et les afficher dans .Net WinForm et .Net WebForm (asp.net).
1. Utilisez asp.net pour télécharger l'image et la stocker dans SQL Server, puis lisez-la depuis SQL Server et affichez-la :
1) Téléchargez et enregistrez sur SQL Server
Structure de la base de données
créer un test de table
{
identité(1,1),
Image FImage
}
Procédures stockées associées
Créer une procédure UpdateImage
(
@UpdateImageImage
)
Comme
Insérer dans les valeurs de test (FImage) (@UpdateImage)
ALLER
Ajoutez ce qui suit au fichier UpPhoto.aspx :
<input id="UpPhoto" name="UpPhoto" runat="server" type="file">
<asp:Button id="btnAdd" name="btnAdd" runat="server" Text="Upload"></asp:Button>
Ajoutez ensuite le code de traitement des événements de clic du bouton btnAdd dans le fichier code-behind UpPhoto.aspx.cs :
private void btnAdd_Click (expéditeur d'objet, System.EventArgs e)
{
//Récupère l'image et convertit l'image en octet[]
HttpPostedFile upPhoto=UpPhoto.PostedFile;
int upPhotoLength=upPhoto.ContentLength;
octet[] PhotoArray=nouveau octet[upPhotoLength];
Flux PhotoStream=upPhoto.InputStream;
PhotoStream.Read(PhotoArray,0,upPhotoLength);
//Se connecter à la base de données
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;
//Si vous souhaitez ajouter des images sans utiliser de procédures stockées, remplacez les quatre lignes de code ci-dessus par :
//string strSql="Insérer dans les valeurs de test(FImage) (@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) Lisez à partir de SQL Server et affichez-le. Ajoutez le code suivant à l'endroit où l'image doit être affichée :
<asp:image id="imgPhoto" runat="server" ImageUrl="ShowPhoto.aspx"></asp:image>
Code du corps ShowPhoto.aspx :
private void Page_Load (expéditeur de l'objet, System.EventArgs e)
{
si(!Page.IsPostBack)
{
SqlConnection conn=nouveau SqlConnection()
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";
string strSql="select * from testwhere id=2";//Supposons ici que l'image avec l'id 2 est obtenue
SqlCommand cmd=nouveau SqlCommand(strSql,conn);
conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
lecteur.Read();
Response.ContentType="application/octet-stream";
Réponse.BinaryWrite((Byte[])reader["FImage"]);
Réponse.End();
lecteur.Close();
}
}
2. Enregistrez l'image sur SQL Server dans WinForm, lisez-la à partir de SQL Server et affichez-la dans la zone d'image
1), stocker dans SQL Server
La structure de la base de données et les procédures stockées utilisées sont les mêmes que ci-dessus. Tout d'abord, ajoutez un contrôle OpenFileDialog au formulaire et nommez-le ofdSelectPic ;
Ensuite, ajoutez un bouton d'ouverture de fichier sur le formulaire et ajoutez le code d'événement de clic suivant :
Flux ms ;
octet[] picoctet ;
//ofdSelectPic.ShowDialog();
si (ofdSelectPic.ShowDialog()==DialogResult.OK)
{
si ((ms=ofdSelectPic.OpenFile())!=null)
{
//MessageBox.Show("ok");
picbyte=nouvel octet[ms.Length];
ms.Position=0 ;
ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
//MessageBox.Show("Lecture terminée !");
//Se connecter à la base de données
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) Lire et afficher dans la Picturebox Tout d'abord, ajoutez une Picturebox nommée ptbShow
Ensuite, ajoutez un bouton et ajoutez l'événement de réponse suivant :
SqlConnection conn=new SqlConnection();
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";
string strSql="sélectionnez FImage à partir du test où id=1" ;
SqlCommand cmd=nouveau SqlCommand(strSql,conn);
conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
lecteur.Read();
MemoryStream ms=new MemoryStream((byte[])reader["FImage"])
;
lecteur.Close();
conn.Close();
ptbShow.Image=image;
Adresse originale : http://stewen.cnblogs.com/archive/2005/12/20/300587.aspx