kfaycal
Messages postés44Date d'inscriptionvendredi 16 avril 2021StatutMembreDernière intervention24 mai 2021
-
17 avril 2021 à 12:47
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023
-
18 avril 2021 à 14:30
Bonjour, comment vous allez?
j'aimerais savoir comment Insérer une image dans la base de donnée a partir du formulaire C#.
Et aussi quel doit être "image" le type de champs dans la table user?
voici ce que moi j'ai mi:
voici d'abord le formulaire ajout user :
voici mon code source:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using System.Text;
using System.Windows.Forms;
using WindowsFormsApp1.BLL;
using WindowsFormsApp1.DAL;
using WindowsFormsApp1.TOOL;
using MySql.Data.MySqlClient;
namespace WindowsFormsApp1.Windows_Form.utilisateur
{
public partial class ajoututilisateur : Form
{
databasehelper dh = new databasehelper();
MySqlDataReader dr;
operateurcontroleur opc = new operateurcontroleur();
operateurinfo opi = new operateurinfo();
FormCollection listform;
DataSet ds1, ds2, ds3;
//variable
bool result;
private UserControl userajout;
public ajoututilisateur(UserControl usera)
{
InitializeComponent();
this.userajout = usera;
}
//public MySqlConnection maConnection;
private void button4_Click(object sender, EventArgs e)
{
try
{
if (pictureprofil.Image == null)
{
if (txtprofil.Text == "Etudiant" || txtprofil.Text == "Etudiant Chef")
{
if (txtnomprenom.Text == "" || txtlogin.Text == "" || txtmotdepasse.Text == "" || txtprofil.Text == "" || txtstatut.Text == "" || txtfiliere.Text == "" || txtniveau.Text == "")
{
MessageBox.Show("Désolé tous les champs doivent être renseignés");
}
else
{
dh.ExecuteNonQuery(" insert into utilisateur(nomprenom,login,motpasse,profil,statut,nom_filiere,nom_niveau) values ('" + txtnomprenom.Text.Replace("'", "''") + "','" + txtlogin.Text.Replace("'", "''") + "',password('" + txtmotdepasse.Text.Replace("'", "''") + "'),'" + txtprofil.Text.Replace("'", "''") + "','" + txtstatut.Text.Replace("'", "''") + "', '" + txtfiliere.Text.Replace("'", "''") + "','" + txtniveau.Text.Replace("'", "''") + "')");
MessageBox.Show("Utilisateur enregistré avec succès");
(userajout as UCutilisateur).affiu();
}
}
else
{
if (txtnomprenom.Text == "" || txtlogin.Text == "" || txtmotdepasse.Text == "" || txtprofil.Text == "" || txtstatut.Text == "")
{
MessageBox.Show("Désolé tous les champs doivent être renseignés");
}
else
{
dh.ExecuteNonQuery(" insert into utilisateur(nomprenom,login,motpasse,profil,statut) values ('" + txtnomprenom.Text.Replace("'", "''") + "','" + txtlogin.Text.Replace("'", "''") + "',password('" + txtmotdepasse.Text.Replace("'", "''") + "'),'" + txtprofil.Text.Replace("'", "''") + "','" + txtstatut.Text.Replace("'", "''") + "')");
MessageBox.Show("Utilisateur enregistré avec succès");
(userajout as UCutilisateur).affiu();
}
}
}
else
{
if (txtprofil.Text == "Etudiant" || txtprofil.Text == "Etudiant Chef")
{
if (txtnomprenom.Text == "" || txtlogin.Text == "" || txtmotdepasse.Text == "" || txtprofil.Text == "" || txtstatut.Text == "" || txtfiliere.Text == "" || txtniveau.Text == "")
{
MessageBox.Show("Désolé tous les champs doivent être renseignés");
}
else
{
MemoryStream ms = new MemoryStream();
pictureprofil.Image.Save(ms, pictureprofil.Image.RawFormat);
byte[] img = ms.ToArray();
dh.ExecuteNonQuery(" insert into utilisateur(nomprenom,login,motpasse,profil,statut,nom_filiere,nom_niveau,photo) values ('" + txtnomprenom.Text.Replace("'", "''") + "','" + txtlogin.Text.Replace("'", "''") + "',password('" + txtmotdepasse.Text.Replace("'", "''") + "'),'" + txtprofil.Text.Replace("'", "''") + "','" + txtstatut.Text.Replace("'", "''") + "','"+txtfiliere.Text.Replace("'","''")+"','"+txtniveau.Text.Replace("'","''")+"','" + img + "'"); ;
MessageBox.Show("Utilisateur enregistré avec succès");
(userajout as UCutilisateur).affiu();
}
}
else
{
if (txtnomprenom.Text == "" || txtlogin.Text == "" || txtmotdepasse.Text == "" || txtprofil.Text == "" || txtstatut.Text == "")
{
MessageBox.Show("Désolé tous les champs doivent être renseignés");
}
else
{
MemoryStream ms = new MemoryStream();
pictureprofil.Image.Save(ms,pictureprofil.Image.RawFormat) ;
byte[] img = ms.ToArray();
dh.ExecuteNonQuery(" insert into utilisateur(nomprenom,login,motpasse,profil,statut,photo) values ('" + txtnomprenom.Text.Replace("'", "''") + "','" + txtlogin.Text.Replace("'", "''") + "',password('" + txtmotdepasse.Text.Replace("'", "''") + "'),'" + txtprofil.Text.Replace("'", "''") + "','" + txtstatut.Text.Replace("'", "''") + "','" + img + "', "); ;
MessageBox.Show("Utilisateur enregistré avec succès");
(userajout as UCutilisateur).affiu();
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnphoto_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog op = new OpenFileDialog();
op.Title = "Insérer la photo d'un Utilisateur";
op.Filter = "Images JPEG|*.jpg|Images GIF|*.gif|Images PNG|*.png|Images BMP|*.bmp|Tous les fichiers |*.*"; //pour afficher seulement les images "|*.JPG;*.PNG;*.GIF;*.BMP";
DialogResult dr = op.ShowDialog();
pictureprofil.Image = Image.FromFile(op.FileName);
string chemin = op.FileName;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void label9_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
txtnomprenom.Text = "";
txtlogin.Text = "";
txtmotdepasse.Text = "";
txtprofil.Text = "";
txtstatut.Text = "";
txtfiliere.Text = "";
txtniveau.Text = "";
pictureprofil.Image = null;
}
private void retourprofil_Paint(object sender, PaintEventArgs e)
{
}
private void retourfiliere_Click(object sender, EventArgs e)
{
txtfiliere.Text = "";
}
private void retourniveau_Click(object sender, EventArgs e)
{
txtniveau.Text = "";
}
private void pictureprofil_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void ajoututilisateur_Load(object sender, EventArgs e)
{
try
{
//charger les noms des profils
ds1 = dh.ExecuteDataSet("select distinct nom_profil from profil order by nom_profil asc");
txtprofil.DataSource = ds1.Tables[0];
txtprofil.DisplayMember = "nom_profil";
txtprofil.Text = "";
//charger les noms des filieres
ds2 = dh.ExecuteDataSet("select distinct abrege from filiere order by abrege asc");
txtfiliere.DataSource = ds2.Tables[0];
txtfiliere.DisplayMember = "abrege";
txtfiliere.Text = "";
//charger les noms des niveaux
ds3 = dh.ExecuteDataSet("select distinct abrege from niveau order by abrege asc");
txtniveau.DataSource = ds3.Tables[0];
txtniveau.DisplayMember = "abrege";
txtniveau.Text = "";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
A voir également:
Insérer une image dans une base de données phpmyadmin
Whismeril
Messages postés18419Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 juin 2023624 17 avril 2021 à 13:38
Bonjour
de façon générale, c'est déconseillé.
Ca fait augmenter la taille des bases de données de façons exponentielles, ce qui a pour effet lenteur, plantage, saturation etc...
La pratique conseillée est de stocker les images dans un répertoire dédié, avec un nom unique est d'enregistrer le nom du fichier dans la base de données.
Il y a d'ailleurs des bases de données pour lesquelles c'est tout simplement impossible.
Il faut donc commencer par regarder la documentation de ta bdd.
kfaycal
Messages postés44Date d'inscriptionvendredi 16 avril 2021StatutMembreDernière intervention24 mai 2021 17 avril 2021 à 14:06
D'accord je vois ce que vous disiez. Mais est-ce possible d'insérer le lien d'une image dans la bd et lorsqu'une personne se connecte a l'application l'image de la personne s'affiche ?
Whismeril
Messages postés18419Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 juin 2023624 17 avril 2021 à 15:54
Et bien à partir de ta PictureBox tu l’enregistres quelque part (par exemple dans c:\BDD\Images) avec un nom unique et fortement lié à l’enregistrement (par exemple en utilisant la clé unique si tu en as une) et tu stokes le nom ou le chemin complet dans la BDD sous forme de string