Je suis en train de stocker trois images d'un formulaire (PictureBox) dans une base de données SQL (MSSQL2008) Je suis novice en programmation et j'ai un peu de difficulté à simplifier mon code. Le ci-dessous fait ce que je veux mais est clairement inefficace. Des indications sur ce qu'il faut changer pour améliorer cela?Stocker plusieurs images dans la base de données SQL
Private Sub SaveImages()
Dim ConStr As String = "Data Source=SERVER\SQL2008;Initial Catalog=NorthPole;Integrated Security=True"
Dim con As New SqlConnection(ConStr)
Dim sqlCommand As New SqlCommand()
sqlCommand.Connection = con
sqlCommand.CommandText = "INSERT INTO Items (ItemID, ItemNumber, ItemImage1, ItemImage2, ItemImage3) SELECT NEWID(), @ItemNumber, @ItemImage1, @ItemImage2, @ItemImage3"
sqlCommand.Parameters.Add(New SqlParameter("@ItemNumber", SqlDbType.VarChar, 20)).Value = "MS1006"
Dim ms1 As MemoryStream = New MemoryStream()
PictureEdit1.Image.Save(ms1, System.Drawing.Imaging.ImageFormat.Jpeg)
sqlCommand.Parameters.Add(New SqlParameter("@ItemImage1", SqlDbType.VarBinary)).Value = ms1.GetBuffer
Dim ms2 As MemoryStream = New MemoryStream()
PictureEdit2.Image.Save(ms2, System.Drawing.Imaging.ImageFormat.Jpeg)
sqlCommand.Parameters.Add(New SqlParameter("@ItemImage2", SqlDbType.VarBinary)).Value = ms2.GetBuffer
Dim ms3 As MemoryStream = New MemoryStream()
PictureEdit3.Image.Save(ms3, System.Drawing.Imaging.ImageFormat.Jpeg)
sqlCommand.Parameters.Add(New SqlParameter("@ItemImage3", SqlDbType.VarBinary)).Value = ms3.GetBuffer
con.Open()
sqlCommand.ExecuteNonQuery()
con.Close()
End Sub
Private Sub LoadImages()
Dim ConStr As String = "Data Source=SERVER\SQL2008;Initial Catalog=NorthPole;Integrated Security=True"
Dim con As New SqlConnection(ConStr)
con.Open()
Dim sqlCommand As New SqlCommand()
sqlCommand.Connection = con
sqlCommand.CommandText = "SELECT ItemImage1 FROM items WHERE ItemNumber = 'MS1006'"
Dim buffer1 As Byte() = sqlCommand.ExecuteScalar()
Dim ms1 As MemoryStream = New MemoryStream(buffer1)
PictureEdit1.Image = Image.FromStream(ms1)
sqlCommand.CommandText = "SELECT ItemImage2 FROM items WHERE ItemNumber = 'MS1006'"
Dim buffer2 As Byte() = sqlCommand.ExecuteScalar()
Dim ms2 As MemoryStream = New MemoryStream(buffer2)
PictureEdit2.Image = Image.FromStream(ms2)
sqlCommand.CommandText = "SELECT ItemImage3 FROM items WHERE ItemNumber = 'MS1006'"
Dim buffer3 As Byte() = sqlCommand.ExecuteScalar()
Dim ms3 As MemoryStream = New MemoryStream(buffer3)
PictureEdit3.Image = Image.FromStream(ms3)
con.Close()
End Sub
Est-ce que cela ne va jamais à 3 images ou voulez-vous permettre d'en ajouter d'autres. –
Theres une chance d'ajouter plus de picturebox dans le futur, même si ce serait juste un autre PictureBox ou deux. – madlan