jul00
Messages postés85Date d'inscriptionsamedi 20 novembre 2004StatutMembreDernière intervention18 juin 2009
-
13 mai 2006 à 20:26
jul00
Messages postés85Date d'inscriptionsamedi 20 novembre 2004StatutMembreDernière intervention18 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
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 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 :-)
jul00
Messages postés85Date d'inscriptionsamedi 20 novembre 2004StatutMembreDernière intervention18 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;
}
}
********************************************
jul00
Messages postés85Date d'inscriptionsamedi 20 novembre 2004StatutMembreDernière intervention18 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.
**********************************************
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 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.