Base de donnees a picturebox
Bonjour a tous.
J'ai un probleme, j'arrive pas a recuperer la photo que j'ai mis dans ma base de donnees.
Pour ce j'ai besoin d'aide. Je ou mets le code entier.
Code:
1 2 3 4 5 6 7 8 9 10 11
| 'Imports System.Data
Imports MySql.Data
'Imports System.Data.SqlClient
Imports MySql.Data.MySqlClient
Imports System.IO
Imports System.Drawing.Imaging.ImageFormat
Imports MySql.Data.MySqlClient.MySqlDataReader
Public Class Form1
Dim strCn As String = "server=localhost;" & _
"Database=test;password= ;User Id=root" |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cn As New MySqlConnection(strCn)
Dim cmd As New MySqlCommand("INSERT INTO blobcenter (blobPict) " & _
"VALUES (@blobPict)", cn)
Dim strBLOBFilePath As String = _
"C:\Users\MICHEL\Desktop\photoCellInfo\image.jpg"
Dim fsBLOBFile As New FileStream(strBLOBFilePath, _
FileMode.Open, FileAccess.Read)
Dim bytBLOBData(fsBLOBFile.Length() - 1) As Byte
fsBLOBFile.Read(bytBLOBData, 0, bytBLOBData.Length)
fsBLOBFile.Close()
Dim prm As New MySqlParameter("@blobPict", MySqlDbType.VarBinary, _
bytBLOBData.Length, ParameterDirection.Input, False, _
0, 0, Nothing, DataRowVersion.Current, bytBLOBData)
cmd.Parameters.Add(prm)
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'Dim cn As New MySqlConnection(strCn)
'Dim cmd As New MySqlCommand("SELECT blobId, " & _
' "blobPict FROM blobcenter ORDER BY blobId", cn)
'Dim da As New MySqlDataAdapter(cmd)
'Dim ds As New DataSet()
'da.Fill(ds, "blobcenter")
'Dim c As Integer = ds.Tables("blobcenter").Rows.Count
'If c > 0 Then
'Dim bytBLOBData() As Byte = _
'ds.Tables("blobcenter").Rows(c - 1)("blobPict")
'Dim stmBLOBData As New MemoryStream(bytBLOBData)
'PictBlob.Image = Image.FromStream(stmBLOBData) ////(probleme ici)
'End If |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 'DataReader
Dim cn As New MySqlConnection(strCn)
Dim cmd As New MySqlCommand("SELECT blobId, " & _
"blobPict FROM blobcenter ORDER BY blobId", cn)
Dim dr As MySqlDataReader
cn.Open()
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
If dr.Read Then
Dim bytBLOBData(dr.GetBytes(1, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte
dr.GetBytes(1, 0, bytBLOBData, 0, bytBLOBData.Length)
Dim stmBLOBData As New MemoryStream(bytBLOBData)
PictBlob.Image = Image.FromStream(stmBLOBData) ////(probleme ici)
End If
dr.Close()
End Sub
End Class |
Ca me dit le paramètre n'est pas valide!!!
La photo ne s'affiche pas
Je'ai pris l'exemple de quelqu'un jusque la ca ne fonctionne pas chez moi.
Ca enregistre bien mais ca n'affiche pas la photo seulement un truc gris!
Code:
1 2 3 4 5 6 7 8
| Imports MySql.Data.MySqlClient
Imports System.Data.DataSet
Imports System.IO
Public Class Form1
Private conn As New MySqlConnection
Private da As New MySqlDataAdapter("select * from employe", conn)
Private dt As New DataSet |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
conn.ConnectionString = "server=localhost; user id=root; password= ; database=123456"
conn.Open()
da.Fill(dt, "employe")
Dim table As DataTable
table = dt.Tables("employe")
DataGridView1.DataSource = table
tb_nom.Focus()
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub |
Code:
1 2 3 4 5 6 7 8
| Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
tb_nom.Text = Nothing
tb_prenom.Text = Nothing
cb_1.Text = Nothing
cb_2.Text = Nothing
DateTimePicker1.Value = Date.Now
PictureBox1.Image = PictureBox1.BackgroundImage
End Sub |
Code:
1 2 3 4 5 6 7 8
| Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.OpenFileDialog1.FileName = Nothing
Me.OpenFileDialog1.ShowDialog()
If Not Me.OpenFileDialog1.FileName = Nothing Then
Me.PictureBox1.ImageLocation = Me.OpenFileDialog1.FileName
End If
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Public Function ConvertToData(ByVal myImage As Image) As Byte()
Dim ms As New MemoryStream()
Try
myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Dim myBytes(ms.Length - 1) As Byte
ms.Position = 0
ms.Read(myBytes, 0, ms.Length)
Return myBytes
End Function |
Code:
1 2 3 4 5
| 'Convertir bytes en image
Public Function ConvertToImage(ByVal data() As Byte) As Image
Dim stream As New MemoryStream(data)
Return Image.FromStream(stream)
End Function |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If tb_nom.Text = Nothing Then
MsgBox("Vous devez remplir le nom!", MsgBoxStyle.Exclamation, "Verification")
End If
If tb_prenom.Text = Nothing Then
MsgBox("Vous devez remplir le prenom!", MsgBoxStyle.Exclamation, "Verification")
End If
If cb_1.Text = Nothing Then
MsgBox("Vous devez remplir le sexe!", MsgBoxStyle.Exclamation, "Verification")
End If
If cb_2.Text = Nothing Then
MsgBox("Vous devez remplir le statut!", MsgBoxStyle.Exclamation, "Verification")
End If |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 'connection
conn.Open()
Dim ligne As DataRow
ligne = dt.Tables("employe").NewRow
'Affectation
ligne(1) = UCase(tb_nom.Text)
ligne(2) = UCase(tb_prenom.Text)
ligne(3) = UCase(cb_1.Text)
ligne(4) = DateTimePicker1.Value
ligne(5) = UCase(cb_2.Text)
ligne(6) = ConvertToData(PictureBox1.Image)
'Ajout
dt.Tables("employe").Rows.Add(ligne)
Dim cmdBuilder As MySqlCommandBuilder
cmdBuilder = New MySqlCommandBuilder(da)
da.InsertCommand = cmdBuilder.GetInsertCommand
da.Update(dt, "employe")
MsgBox("L'utilisateur a ete ajoute avec succes", MsgBoxStyle.Information, "Succes")
conn.Close()
End Sub |
Code:
1 2 3
| Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Me.Close()
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11
| Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
Dim ligneEnCours As Integer
ligneEnCours = DataGridView1.CurrentRow.Index
tb_nom.Text = DataGridView1.Item(1, ligneEnCours).Value
tb_prenom.Text = DataGridView1.Item(2, ligneEnCours).Value
cb_1.Text = DataGridView1.Item(3, ligneEnCours).Value
cb_2.Text = DataGridView1.Item(5, ligneEnCours).Value
DateTimePicker1.Value = DataGridView1.Item(4, ligneEnCours).Value
PictureBox1.Image = ConvertToImage(DataGridView1.Item(6, ligneEnCours).Value)
End Sub
End Class |
Que dois je faire s'il vous plait?