Tester la connection a une base de données

jul00
Messages postés
85
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
18 juin 2009
- 13 mai 2006 à 20:26
jul00
Messages postés
85
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
18 juin 2009
- 14 mai 2006 à 12:28
salut voila je voudrai tester la connection à ma base de donnée dans une fonction mais ça marche pas.

voila un ti bout de code
*********************************************
public int ConOuv()
{
try
{
//voic ma chaine de connection
string chaineDeConnection = @"DSN=PostgreSQL ANSI;...";
OdbcConnection connection = new OdbcConnection();
connection.ConnectionString = chaineDeConnection;
connection.Open();
return 1;
}
catch
{
return 0;
}
}
.....


.....
public int TestCon()
{


//test de la connection
if(connection.State=System.Data.ConnectionState.Open)
{
return 0;
}
else
{
return 1;
}
}
********************************************


mais il aime pas le connection.State
ma connection marche umpec les requetes marchent super c'est juste que je voudrai faire une fonction qui me test ma connection

voila si une âme charitable passe par là merci

7 réponses

cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
14 mai 2006 à 00:14
Salut,

Tu voulais probablement utiliser l'opérateur d'égalité et non celui d'assignation.

/*
coq
MVP Visual C#
*/
0
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
14 mai 2006 à 00:17
Ah oui et ne perd pas de vue que l'état change seulement en cas de déconnexion propre, pas en cas de rupture du lien, donc gère quand même les exceptions :-)

/*
coq
MVP Visual C#
*/
0
jul00
Messages postés
85
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
18 juin 2009

14 mai 2006 à 10:32
exact merci le coq
mais il plante quant meme au if
peut etre faudrait il que je passe en parametre connection dans TestCon()?? ou que je declare en public connection dans ma classe???

*********************************************
public int ConOuv()
{
try
{
//voic ma chaine de connection
string chaineDeConnection = @"DSN=PostgreSQL ANSI;...";
OdbcConnection connection = new OdbcConnection();
connection.ConnectionString = chaineDeConnection;
connection.Open();
return 1;
}
catch
{
return 0;
}
}
.....
.....
public int TestCon()
{


//test de la connection
if(connection.State!=System.Data.ConnectionState.Open)
{
return 0;
}
else
{
return 1;
}
}
********************************************
0
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
14 mai 2006 à 10:41
"mais il plante quant meme au if"
Ok...
Message du compilateur ?
ou
Exception au runtime ?

/*
coq
MVP Visual C#
*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jul00
Messages postés
85
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
18 juin 2009

14 mai 2006 à 11:44
c'est une exception au runtime voila le message

**********************************************
Une exception non gérée du type 'System.NullReferenceException' s'est produite dans WindowsApplication3.exe


Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet.
**********************************************
0
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
14 mai 2006 à 11:55
Ah ok, je n'avais pas vue la nouvelle déclaration dans la méthode ConOuv...
Ton membre "connection" n'est jamais instantié, comme tu en déclares un nouveau dans cette méthode.

public int ConOuv()
{
try
{
//voic ma chaine de connection
string chaineDeConnection = @"DSN=PostgreSQL ANSI;...";
connection = new OdbcConnection();
connection.ConnectionString = chaineDeConnection;
connection.Open();
return 1;
}
catch
{
return 0;
}
}

Et dans ta méthode TestCon, commence par tester la nullité avant de faire une action :
public int TestCon()
{
int ret = 0;

if ( this.connection != null)
{
//test de la connection
if(connection.State!=System.Data.ConnectionState.Open)
{
ret = 0;
}
else
{
ret = 1;
}
}
else
{
ret = 0;
}

return ret;
}

Par contre si ton retour est simplement de type vrai/faux, pourquoi utiliser un int au lieu d'un bool ?

PS : et tu devrais aussi éviter la chaine de connexion en dur dans le code.

/*
coq
MVP Visual C#
*/
0
jul00
Messages postés
85
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
18 juin 2009

14 mai 2006 à 12:28
Super merci mec
0