Nothing
Try Catchdans la même procédure ? Ce n'est guère recommandé
If editMode Then Try Dim img() As Byte = nothing Dim mstream As New System.IO.MemoryStream PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() mstream.Close() Cmd = New NpgsqlCommand("Update bv SET nom=@nom , superficie = @area , carte = @carte WHERE id =" + CStr(id) + " ;", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", DbType.String)).Value = CStr(TextBox1.Text) Cmd.Parameters.Add(New NpgsqlParameter("@area", DbType.Decimal)).Value = CDec(TextBox2.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", DbType.Binary)).Value = img ' suite du code Catch ex As Exception End Try End If
Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim img As Byte() Dim mstream As New System.IO.MemoryStream PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() mstream.Close() End Sub End Class
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDbTypepar
NpgsqlTypes
DbType.Binaryqui pose problème
Imports Npgsql 'Imports NpgsqlTypes Imports System.IO Imports System.Text.RegularExpressions Public Class Addsbv Public id As Integer Public id_sbv As Integer Public surface As Decimal Public nom As String Public imgSelected() As Byte Public editMode As Boolean Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_eng.Click Try Dim img() As Byte Dim mstream As New MemoryStream PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() mstream.Close() If editMode Then Cmd = New NpgsqlCommand("Update sbv SET nom=@nom , surface = @area , carte = @carte WHERE id =" + id_sbv.ToString + " ;", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", DbType.String)).Value = tb_nom.Text Cmd.Parameters.Add(New NpgsqlParameter("@area", DbType.Decimal)).Value = ConVert.ToDecimal(tb_surface.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", DbType.Bytea)).Value = img Conn.Open() Cmd.ExecuteNonQuery() MessageBox.Show("SBV modifier !") Else Cmd = New NpgsqlCommand("INSERT INTO sbv(nom,surface,carte , id_bv) values (@nom , @area , @carte , " & id.ToString & ")", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", DbType.String)).Value = tb_nom.Text Cmd.Parameters.Add(New NpgsqlParameter("@area", DbType.Decimal)).Value = Convert.ToDecimal(tb_surface.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", DbType.Bytea)).Value = img Conn.Open() Cmd.ExecuteNonQuery() MessageBox.Show("SBV Ajouté !") End If Catch ex As Exception MessageBox.Show(ex.Message, "Erreur",MessageBoxButtons.OK, MessageBoxIcon.Warning) Exit Sub Finally Conn.Close() Me.Close() End Try End Sub Private Sub PictureBox1_DoubleClick(sender As Object, e As EventArgs) Handles PictureBox1.DoubleClick OpenFileDialog1.FileName = Nothing OpenFileDialog1.ShowDialog() PictureBox1.ImageLocation = OpenFileDialog1.FileName End Sub Private Sub Addsbv_Load(sender As Object, e As EventArgs) Handles MyBase.Load If editMode Then btn_eng.Text = "Modifier" tb_nom.Text = nom tb_surface.Text = surface Try Dim ms As New MemoryStream(imgSelected) PictureBox1.Image = Image.FromStream(ms) Catch ex As Exception MessageBox.Show(ex.Message, "Erreur",MessageBoxButtons.OK, MessageBoxIcon.Warning) End Try End If End Sub End Class
S'il vous plait comment je peux traiter l'erreur ?
Mieux vaut le copier qu'une fois dans un sous-programme et l'appeler lorsque l'on en a besoin .
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_eng.Click If editMode Then Dim img() As Byte = Nothing Try Dim mstream As New System.IO.MemoryStream PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() mstream.Close() Cmd = New NpgsqlCommand("Update sbv SET nom=@nom , surface = @area , carte = @carte WHERE id =" + CStr(id_sbv) + " ;", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", NpgsqlTypes.String)).Value = CStr(tb_nom.Text) Cmd.Parameters.Add(New NpgsqlParameter("@area", NpgsqlTypes.Decimal)).Value = CDec(tb_surface.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", NpgsqlTypes.Binary)).Value = img Conn.Open() Cmd.ExecuteNonQuery() MsgBox("SBV modifier !") Conn.Close() Me.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Erreur") Exit Sub Finally Conn.Close() End Try Else Dim img() As Byte = Nothing 'ligne dupliquée Try 'ligne dupliquée Dim mstream As New System.IO.MemoryStream 'ligne dupliquée PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) 'ligne dupliquée img = mstream.GetBuffer() 'ligne dupliquée mstream.Close() 'ligne dupliquée Cmd = New NpgsqlCommand("INSERT INTO sbv(nom,surface,carte , id_bv) values (@nom , @area , @carte , " & CStr(id) & ")", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", NpgsqlTypes.String)).Value = CStr(tb_nom.Text) 'ligne dupliquée Cmd.Parameters.Add(New NpgsqlParameter("@area", NpgsqlTypes.Decimal)).Value = CDec(tb_surface.Text) 'ligne dupliquée Cmd.Parameters.Add(New NpgsqlParameter("@carte", NpgsqlTypes.Binary)).Value = img 'ligne dupliquée Conn.Open() 'ligne dupliquée Cmd.ExecuteNonQuery() MsgBox("SBV Ajouté !") Conn.Close() 'ligne dupliquée Me.Close() 'ligne dupliquée Catch ex As Exception 'ligne dupliquée MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Erreur") 'ligne dupliquée Exit Sub 'ligne dupliquée Finally 'ligne dupliquée Conn.Close() 'ligne dupliquée End Try 'ligne dupliquée End If End Sub
Try Dim StringImage As String Dim img As Byte() Dim mstream As New MemoryStream PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() ' les bytes de l'image For i = 0 To img.Length - 1 StringImage = StringImage & img(i).ToString("X2") ' on convertit chaque byte en 2 caractères hexadécimaux Next Dim leMessage As String = "SBV modifier !" mstream.Close() If editMode Then Cmd = New NpgsqlCommand("Update sbv SET nom=@nom , surface = @area , carte = @carte WHERE id =" + id_sbv.ToString + " ;", Conn) Else Cmd = New NpgsqlCommand("INSERT INTO sbv(nom,surface,carte , id_bv) values (@nom , @area , @carte , " & id.ToString & ")", Conn) leMessage As String = "SBV Ajouté !" End If Cmd.Parameters.Add(New NpgsqlParameter("@nom", DbType.String)).Value = tb_nom.Text Cmd.Parameters.Add(New NpgsqlParameter("@area", DbType.Decimal)).Value = Convert.ToDecimal(tb_surface.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", DbType.String)).Value = Stringimage Conn.Open() Cmd.ExecuteNonQuery() MessageBox.Show(leMessage) Catch ex As Exception MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Warning) Exit Sub Finally Conn.Close() Me.Close() End Try
Imports Npgsql Imports NpgsqlTypes Imports System.IO Imports System.Text.RegularExpressions Public Class Addsbv Public id As Integer Public id_sbv As Integer Public surface As Decimal Public nom As String Public imgSelected() As Byte Public editMode As Boolean Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_eng.Click If editMode Then Dim img() As Byte = Nothing Try Dim mstream As New System.IO.MemoryStream PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() mstream.Close() Cmd = New NpgsqlCommand("Update sbv SET nom=@nom , surface = @area , carte = @carte WHERE id =" + CStr(id_sbv) + " ;", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", DbType.String)).Value = CStr(tb_nom.Text) Cmd.Parameters.Add(New NpgsqlParameter("@area", DbType.Decimal)).Value = CDec(tb_surface.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", DbType.Binary)).Value = img Conn.Open() Cmd.ExecuteNonQuery() MsgBox("SBV modifier !") Conn.Close() Me.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Erreur") Exit Sub Finally Conn.Close() End Try Else Dim img() As Byte = Nothing Try Dim mstream As New System.IO.MemoryStream PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() mstream.Close() Cmd = New NpgsqlCommand("INSERT INTO sbv(nom,surface,carte , id_bv) values (@nom , @area , @carte , " & CStr(id) & ")", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", DbType.String)).Value = CStr(tb_nom.Text) Cmd.Parameters.Add(New NpgsqlParameter("@area", DbType.Decimal)).Value = CDec(tb_surface.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", DbType.Binary)).Value = img Conn.Open() Cmd.ExecuteNonQuery() MsgBox("SBV Ajouté !") Conn.Close() Me.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Erreur") Exit Sub Finally Conn.Close() End Try End If End Sub Private Sub PictureBox1_DoubleClick(sender As Object, e As EventArgs) Handles PictureBox1.DoubleClick OpenFileDialog1.FileName = Nothing OpenFileDialog1.ShowDialog() PictureBox1.ImageLocation = OpenFileDialog1.FileName End Sub Private Sub Addsbv_Load(sender As Object, e As EventArgs) Handles MyBase.Load If editMode Then btn_eng.Text = "Modifier" tb_nom.Text = nom tb_surface.Text = surface Try Dim ms As New MemoryStream(imgSelected) PictureBox1.Image = Image.FromStream(ms) Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub End Class
Imports Npgsql Imports NpgsqlTypes Imports System.IO Imports System.Text.RegularExpressions Public Class Addsbv Public id As Integer Public id_sbv As Integer Public surface As Decimal Public nom As String Public imgSelected() As Byte Public editMode As Boolean Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_eng.Click If editMode Then Dim img() As Byte = Nothing Try Dim mstream As New System.IO.MemoryStream PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() mstream.Close() Cmd = New NpgsqlCommand("Update sbv SET nom=@nom , surface = @area , carte = @carte WHERE id =" + CStr(id_sbv) + " ;", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", NpgsqlTypes.String)).Value = CStr(tb_nom.Text) Cmd.Parameters.Add(New NpgsqlParameter("@area", NpgsqlTypes.Decimal)).Value = CDec(tb_surface.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", NpgsqlTypes.Binary)).Value = img Conn.Open() Cmd.ExecuteNonQuery() MsgBox("SBV modifier !") Conn.Close() Me.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Erreur") Exit Sub Finally Conn.Close() End Try Else Dim img() As Byte = Nothing Try Dim mstream As New System.IO.MemoryStream PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() mstream.Close() Cmd = New NpgsqlCommand("INSERT INTO sbv(nom,surface,carte , id_bv) values (@nom , @area , @carte , " & CStr(id) & ")", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", NpgsqlTypes.String)).Value = CStr(tb_nom.Text) Cmd.Parameters.Add(New NpgsqlParameter("@area", NpgsqlTypes.Decimal)).Value = CDec(tb_surface.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", NpgsqlTypes.Binary)).Value = img Conn.Open() Cmd.ExecuteNonQuery() MsgBox("SBV Ajouté !") Conn.Close() Me.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Erreur") Exit Sub Finally Conn.Close() End Try End If End Sub Private Sub PictureBox1_DoubleClick(sender As Object, e As EventArgs) Handles PictureBox1.DoubleClick OpenFileDialog1.FileName = Nothing OpenFileDialog1.ShowDialog() PictureBox1.ImageLocation = OpenFileDialog1.FileName End Sub Private Sub Addsbv_Load(sender As Object, e As EventArgs) Handles MyBase.Load If editMode Then btn_eng.Text = "Modifier" tb_nom.Text = nom tb_surface.Text = surface Try Dim ms As New MemoryStream(imgSelected) PictureBox1.Image = Image.FromStream(ms) Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub End Class
Imports Npgsql Imports NpgsqlTypes Imports System.IO Imports System.Text.RegularExpressions Public Class Addsbv Public id As Integer Public id_sbv As Integer Public surface As Decimal Public nom As String Public imgSelected() As Byte Public editMode As Boolean Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_eng.Click Try Dim StringImage As String Dim img As Byte() Dim mstream As New MemoryStream PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() ' les bytes de l'image For i = 0 To img.Length - 1 StringImage = StringImage & img(i).ToString("X2") ' on convertit chaque byte en 2 caractères hexadécimaux Next mstream.Close() If editMode Then Cmd = New NpgsqlCommand("Update sbv SET nom=@nom , surface = @area , carte = @carte WHERE id =" + id_sbv.ToString + " ;", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", DbType.String)).Value = tb_nom.Text Cmd.Parameters.Add(New NpgsqlParameter("@area", DbType.Decimal)).Value = Convert.ToDecimal(tb_surface.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", DbType.String)).Value = Stringimage Conn.Open() Cmd.ExecuteNonQuery() MessageBox.Show("SBV modifier !") Else Cmd = New NpgsqlCommand("INSERT INTO sbv(nom,surface,carte , id_bv) values (@nom , @area , @carte , " & id.ToString & ")", Conn) Cmd.Parameters.Add(New NpgsqlParameter("@nom", DbType.String)).Value = tb_nom.Text Cmd.Parameters.Add(New NpgsqlParameter("@area", DbType.Decimal)).Value = Convert.ToDecimal(tb_surface.Text) Cmd.Parameters.Add(New NpgsqlParameter("@carte", DbType.String)).Value = StringImage Conn.Open() Cmd.ExecuteNonQuery() MessageBox.Show("SBV Ajouté !") End If Catch ex As Exception MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Warning) Exit Sub Finally Conn.Close() Me.Close() End Try End Sub Private Sub PictureBox1_DoubleClick(sender As Object, e As EventArgs) Handles PictureBox1.DoubleClick OpenFileDialog1.FileName = Nothing OpenFileDialog1.ShowDialog() PictureBox1.ImageLocation = OpenFileDialog1.FileName End Sub Private Sub Addsbv_Load(sender As Object, e As EventArgs) Handles MyBase.Load If editMode Then btn_eng.Text = "Modifier" tb_nom.Text = nom tb_surface.Text = surface Try Dim ms As New MemoryStream(imgSelected) PictureBox1.Image = Image.FromStream(ms) Catch ex As Exception MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Warning) End Try End If End Sub End Class
Try Dim StringImage As String = String.Empty
' StringImage est la chaine carte d'une image dans la base de données Dim StringImage As String = "001074A0FF" ' pour tester Dim ListBytes As List(Of Byte) = New List(Of Byte) Dim Index As Integer = 0 For i = 0 To (StringImage.Length \ 2) - 1 ListBytes.Add(Convert.ToByte(StringImage.Substring(Index, 2), 16)) Index += 2 Next Dim img() As Byte = ListBytes.ToArray
PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png) img = mstream.GetBuffer() ' les bytes de l'image For i = 0 To img.Length - 1 StringImage = StringImage & img(i).ToString("X2") ' on convertit chaque byte en 2 caractères hexadécimaux Next mstream.Close()
Public Class DisplayCarte Public img() As Byte Private Sub DisplayCarte_Load(sender As Object, e As EventArgs) Handles MyBase.Load Try Dim ms As New MemoryStream(img) PictureBox1.Image = Image.FromStream(ms) Catch ex As Exception MsgBox(ex.Message) End Try End Sub End Class
Modifié le 21 mai 2020 à 14:54
Merci beaucoup pour votre réponse, j'ai essayer d'initialiser la variable avec "Nothing" mais l'erreur reste le même.
En effet je veux déclarer "img" comme variable.
Je vous demande si vous avez autre solution.
Cordialement.