IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Optimiser l'utilisation d'une connexion MySql


Sujet :

JDBC Java

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut Optimiser l'utilisation d'une connexion MySql
    Bonjour à tous j'ai développé une application java swing et j'ai hébergé la BD sur Internet. Depuis là j'ai des soucis avec l'hébergeur à car il dit que j'utilise trop de ressource de mon serveur mysql. Maintenant je recherche des astuces pour contourner ça ce que j'ai fait c'est créer un objet de connexion lorsque l'utilisateur se log et j'utilise ce même objet dans toute l'application et il y a un problème quand on met du temps avant d'utiliser l'application elle plante ou ne réponds plus. Je veux savoir comment rendre cette connexion persistante pour que lorsque l'utilisateur se log il utilise un seul objet de connexion pour toutes ses transactions dans la bd. Merci d'avance
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Salut Junior
    Tu as regardé du côté du timeout
    http://java.developpez.com/faq/jdbc/...meoutStatement
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Ok ce que tu suggère c'est de modifier la valeur du timeout et tu me conseille de la mettre à combien?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Si tu ne veux pas que ça décroche pendant 4 heures
    alors il faudrait mettre 4 * 60 * 60 = 14400 secondes (le timeout est en secondes)

    Maintenant il faut voir aussi si le site web ne va pas lui aussi décrocher avant cela
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    n passant c'est une application swing comme je t'avais expliqué j'ai juste hébergé la bd mais l'hébergeur dit que j'utilise beaucoup de ressource donc c'est la seule méthode que j'ai trouvé pour utiliser moins de ressource. Est ce que tu as une autre suggestion? De plus c'est plutôt l'objet de connexion que je veux rendre persistant et non dans mon cas le preparedstatement
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Pour le moment non, il faut faire un test avec le timeout.
    Essaye aussi de savoir sur quoi ton hébergeur se base pour calculer "beaucoup de ressources"
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Pour le moment non, il faut faire un test avec le timeout.
    Essaye aussi de savoir sur quoi ton hébergeur se base pour calculer "beaucoup de ressources"
    voilà le lien qu'ils m'ont envoyé: https://www.arvixe.com/mailing/view/...2ca6367c157209
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Je ne sais pas si tu a compris ma préoccupation dernière je crai un objet de connexion que je veux utiliser dans toute l'application maintenant quand je le fait si on met du temps sans utiliser l'application ça ne réponds plus cela a pour avantage qu'on se log une fois au serveur. je pense que ça peut résoudre le problème. Or le timeout s'applique au statement
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  9. #9
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    tu dépasses ce qu'il appelle "Mysql instances" ou "MySQL Processes"
    en principe, ce n'est pas la même chose.

    Il faut leur poser la question directement.
    ça m'étonnerait que le timeout résolve le problème
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  10. #10
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    moi je pense que c'est lié au nombre de connexion au serveur donc je pense qu'en autorisant une connexion par utilisateur par jour ça peut résoudre le problème
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  11. #11
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Si on reprend ce que tu as écris au début, tu utilises un objet gérant la connexion et tu penses qu'en laissant la connexion ouverte, cela va résoudre le problème de consommation.
    Perso, je n'y crois pas.
    Je pense qu'il faut que tu les contactes et que tu leur demande clairement combien d'utilisateurs peuvent se connecter simultanément à la base.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Ceci dit, ce n'est pas vraiment l'usage de garder une connexion ouverte en permanence, la norme serait plutôt :
    - je prends une connexion
    - je l'utilise
    - je la libère

    D'un point de vue de l'optimisation de cette ressource, c'est plutôt au niveau d'un cycle d'utilisation qu'il faudrait regarder.
    Pour une application web, c'est relativement simple, on la prend au début du request et on la libère à la fin de la réponse.
    Pour une application Swing, ce serait plutôt : on prend une connexion, on fait toutes les requêtes dont on a besoin (par exemple pour afficher un écran), on libère

    Dans ton application, tu fais des requêtes à quelle fréquence ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Bon je ne comprends pas bien la question de fréquence d'exécution des requettes mais voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    import message.Message;
    import java.sql.*;
     
    public class ConectDB {
    	  public static Connection con = null;
    	  static ResultSet resultats = null;
    	  private Message msg = new Message();
    	  public Parametre_Connection parm;
    	  Securite s;
    	public ConectDB() {				
    		try {			
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    			String url = "jdbc:mysql://ip:port/bd_name";
    			String user = "user_name";
    			String passwd = "password";
    			con = DriverManager.getConnection(url, user, passwd);
    		} catch (Exception e) {
    			msg.dialog("Problème de connexion à la base de donnée vérifier le réseau "+e.getMessage());
    			e.printStackTrace();			
    			try {
    				con.close();
    			} catch (SQLException e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
    		}
    	}
    	public Connection getConection(){
    		return con;
    	}
    }
    Maintenant voilà une formulaire d'enrégistrement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
     
    package client;
     
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
     
    import javax.swing.JLabel;
    import javax.swing.JTextField;
     
    import message.Message;
    import mise_en_forme.JTextLimited;
     
    import connexion_bd.ConectDB;
    import javax.swing.ImageIcon;
    import java.awt.Toolkit;
    import javax.swing.SwingConstants;
    import javax.swing.JComboBox;
     
    public class Ajouter_Cilent extends JDialog {
    	private static final long serialVersionUID = 1L;
    	private final JPanel contentPanel = new JPanel();
    	private JTextField text_nom;
    	private JTextField text_prenom;
    	private JTextField text_tel;
    	ConectDB con=null;
    	/**
             * Launch the application.
             */
    	public static void main(String[] args) {
    		try {
    			Ajouter_Cilent dialog = new Ajouter_Cilent();
    			dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    			dialog.setVisible(true);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Create the dialog.
             * @throws SQLException 
             */
    	public Ajouter_Cilent() throws SQLException {
    		setIconImage(Toolkit.getDefaultToolkit().getImage(Ajouter_Cilent.class.getResource("/images/logo_sipa.png")));
    		setTitle("Enr\u00E9gistrement d'un client");
    		setModal(true);
    		setBounds(100, 100, 455, 304);
    		getContentPane().setLayout(new BorderLayout());
    		setLocationRelativeTo(getParent());
    		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
    		getContentPane().add(contentPanel, BorderLayout.CENTER);
    		contentPanel.setLayout(null);
    		setLocationRelativeTo(this.getParent());
    		con=new ConectDB();
     
    		JLabel lblEnrgistrerUnNouveau = new JLabel("Enr\u00E9gistrer un nouveau client");
    		lblEnrgistrerUnNouveau.setBounds(65, 11, 300, 33);
    		Font f=new Font("Serif", Font.PLAIN, 25);
    		lblEnrgistrerUnNouveau.setFont(f);	
    		contentPanel.add(lblEnrgistrerUnNouveau);
    		{
    			JLabel lblNom = new JLabel("Nom:");
    			lblNom.setHorizontalAlignment(SwingConstants.RIGHT);
    			lblNom.setBounds(12, 97, 100, 30);
    			contentPanel.add(lblNom);
    		}
    		{
    			JLabel lblPrnom = new JLabel("Pr\u00E9nom:");
    			lblPrnom.setHorizontalAlignment(SwingConstants.RIGHT);
    			lblPrnom.setBounds(12, 137, 100, 30);
    			contentPanel.add(lblPrnom);
    		}
    		{
    			JLabel lblTlphone = new JLabel("T\u00E9l\u00E9phone:");
    			lblTlphone.setHorizontalAlignment(SwingConstants.RIGHT);
    			lblTlphone.setBounds(12, 177, 100, 30);
    			contentPanel.add(lblTlphone);
    		}
     
    		text_nom = new JTextField();
    		text_nom.setFont(new Font("Dialog", Font.PLAIN, 12));
    		text_nom.setBounds(122, 97, 300, 30);
    		contentPanel.add(text_nom);
    		text_nom.setColumns(10);
    		{
    			text_prenom = new JTextField();
    			text_prenom.setFont(new Font("Dialog", Font.PLAIN, 12));
    			text_prenom.setBounds(122, 137, 300, 30);
    			contentPanel.add(text_prenom);
    			text_prenom.setColumns(10);
    		}
    		{
    			text_tel = new JTextField();
    			text_tel.setFont(new Font("Dialog", Font.PLAIN, 12));
    			text_tel.setBounds(122, 177, 300, 30);
    			JTextLimited jt=new JTextLimited();
    			text_tel.setDocument(jt);
    			contentPanel.add(text_tel);
    			text_tel.setColumns(10);
    		}
     
    		JLabel lblAgence = new JLabel("Agence:");
    		lblAgence.setHorizontalAlignment(SwingConstants.RIGHT);
    		lblAgence.setBounds(12, 56, 100, 30);
    		contentPanel.add(lblAgence);
     
    		final JComboBox comboBox = new JComboBox();
    		comboBox.setBounds(122, 56, 300, 33);
    		comboBox.addItem("");
    		if(con.parm.getType().equals("Structure")){			
    			PreparedStatement pre;
    			pre = ConectDB.con.prepareStatement("select agence.nom from agence,structure where agence.id_structure=structure.id and structure.code=?");
    			pre.setString(1, con.parm.getValeur());
    			ResultSet res2=pre.executeQuery();
    			while(res2.next()){
    				comboBox.addItem(res2.getString("nom"));
    			}
    			pre.close();
    		}else{
    			PreparedStatement pre;
    			pre = ConectDB.con.prepareStatement("select nom from agence where code=?");
    			pre.setString(1, con.parm.getValeur());
    			ResultSet res2=pre.executeQuery();
    			while(res2.next()){
    				comboBox.addItem(res2.getString("nom"));
    			}
    			pre.close();
    		}
    		contentPanel.add(comboBox);
    		{
    			JPanel buttonPane = new JPanel();
    			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
    			getContentPane().add(buttonPane, BorderLayout.SOUTH);
    			{
    				JButton okButton = new JButton("Enr\u00E9gistrer");
    				okButton.setIcon(new ImageIcon(Ajouter_Cilent.class.getResource("/icones/mod.gif")));
    				okButton.addActionListener(new ActionListener() {
    					public void actionPerformed(ActionEvent arg0) {
    						if(text_nom.getText().length()!=0){
    							if(text_prenom.getText().length()!=0){
    								if(text_tel.getText().length()!=0){		
    									if(comboBox.getSelectedItem().toString().length()!=0){
    										PreparedStatement pre;
    										int id_client=0;
    										int id_agence=0;
    										try {
    											pre=ConectDB.con.prepareStatement("select max(client.id) as client from client,agence where client.id_agence=agence.id and agence.nom=?");
    											pre.setString(1, comboBox.getSelectedItem().toString());
    											ResultSet res=pre.executeQuery();
    											while(res.next()){
    												id_client=res.getInt("client");												
    											}
    											pre.close();
    											pre=ConectDB.con.prepareStatement("select id from agence where nom=?");
    											pre.setString(1, comboBox.getSelectedItem().toString());
    											ResultSet res2=pre.executeQuery();
    											while(res2.next()){
    												id_agence=res2.getInt("id");												
    											}
    											pre.close();
    											id_client++;
    											String[] prenoms=text_prenom.getText().split(" ");							
    											String code="CL"+id_client;
    											String prenom="";
    											for(int i=0;i<prenoms.length;i++){
    												prenom=prenom+prenoms[i].substring(0,1).toUpperCase()+prenoms[i].substring(1,prenoms[i].length())+" ";
    											}
    											prenom=prenom.substring(0,prenom.length()-1);
    											pre = ConectDB.con.prepareStatement("insert into client(nom,prenom,tel,code,id_agence) values (?,?,?,?,?)");
    											pre.setString(1, text_nom.getText().toUpperCase());
    											pre.setString(2, prenom);
    											pre.setInt(3, Integer.parseInt(text_tel.getText()));
    											pre.setString(4, code);
    											pre.setInt(5, id_agence);
    											pre.executeUpdate();
    											pre.close();
    											new Message().dialog("Enrégistrement effectué avec succès");
    											text_nom.setText("");
    											text_prenom.setText("");
    											text_tel.setText("");
    											comboBox.setSelectedIndex(0);
    										} catch (SQLException e) {
    											// TODO Auto-generated catch block
    											e.printStackTrace();
    											new Message().dialog(e.getMessage());
    										}									
    									}else new Message().dialog("Le champ:agence ne doit pas être vide!");
    								}else new Message().dialog("Le champ: Téléphone ne doit pas être vide!");
    							}else new Message().dialog("Le champ: Prénom ne doit pas être vide!");
    						}else new Message().dialog("Le champ: Nom ne doit pas être vide!");
    					}
    				});
    				buttonPane.add(okButton);
    				getRootPane().setDefaultButton(okButton);
    			}
    			{
    				JButton cancelButton = new JButton("Cancel");
    				cancelButton.setIcon(new ImageIcon(Ajouter_Cilent.class.getResource("/icones/suppr.png")));
    				cancelButton.addActionListener(new ActionListener() {
    					public void actionPerformed(ActionEvent arg0) {
    						dispose();
    					}
    				});
    				cancelButton.setActionCommand("Cancel");
    				buttonPane.add(cancelButton);
    			}
    		}
    	}
    }
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  14. #14
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    ça ne fait pas ce que tu veux car tu as écris :
    dans ta boîte de dialogue client
    ... et donc ça relance une connexion à chaque fois.

    Pour conserver ta connexion ouverte (ce que je désapprouve) il faut que ta classe ConectDB soit instanciée UNE FOIS au lancement de l'application
    et ensuite tu appelles getConection chaque fois que tu en as besoin.

    regarde attentivement le design pattern "singleton" à ce sujet.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  15. #15
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Pour revenir à ma "désapprobation", elle vient que ce que tu fais est contraire à la pratique générale en matière de connexion à une base.
    Ceci est décrit par OButterlin un peu plus haut.

    Dans ton cas, je pense qu'il faut que tu demandes à ton hébergeur comment il comptabilise l'utilisation de MySQL.
    Il n'a pas de raison de te refuser cette information ce serait contre son intérêt.
    Comme ça tu pourras vraiment optimiser.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  16. #16
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Comme tu me l'a suggérer je ne veux plus ouvrir une connexion pendant l'application ce que je faisais je passai en paramètre l'objet de connexion au formulaire bon là c'est du passé. Je pense que je ne libère pas totalement ou pas correctement la connexion après son utilisation
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  17. #17
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Citation Envoyé par junior222 Voir le message
    Comme tu me l'a suggérer je ne veux plus ouvrir une connexion pendant l'application ce que je faisais je passai en paramètre l'objet de connexion au formulaire bon là c'est du passé. Je pense que je ne libère pas totalement ou pas correctement la connexion après son utilisation
    en effet, tu ouvres la connexion à chaque fois que tu lances la boîte de dialogue client
    mais tu ne refermes jamais la connexion.

    Moins urgent :
    Ta classe ConectDB est un peu confuse : tu as une méthode getConection que tu n'utilises pas (semble-t-il)
    et tous les champs sont public. Bon alors, je sais bien que cela fonctionne et je ne vais pas jouer les Ayatollah de java
    mais une fois que ton appli sera stabilisée, il faudra songer à utiliser des getters et setters (c'est tout un débat).
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  18. #18
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Ok merci mais la méthode getConnection est utilisé pour les rapport je passe en paramètre des rapports jasper report. Maintenant je crois que tout devient clair car je fais pareille avec tous les formulaires de l'application et ça veux dire que j'ouvre des tonnes de connexions sans les refermer. Comment faire et où devrais-je fermer les connexion que j'ouvre
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  19. #19
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Ben tu fermes ... quand tu as fini de l'utiliser !!!
    par exemple à la fermeture de ta boîte de dialogue
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  20. #20
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Ok merci je vais ajouter la méthode closeConnection dans la classe ConectDB et effectuer la fermeture comme tu me l'a suggérer et voir ce que l'hébergeur aura encore à dire cette fois ci
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

Discussions similaires

  1. tester une connexion mysql
    Par pop_up dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 03/08/2007, 15h08
  2. API à utiliser pour une connexion wi-fi
    Par ilhamita dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 23/02/2007, 10h04
  3. Realiser une connexion mysql et execute une requete
    Par Taz_8626 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/05/2006, 10h52
  4. [JSP] erreur lors d'une connexion à mySQL
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/08/2004, 16h48
  5. Utilisation d'une base MySQL
    Par sylviefrfr dans le forum Bases de données
    Réponses: 5
    Dernier message: 29/06/2004, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo