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
A voir également:
Connexion base de données c# sql server
C# tester - Meilleures réponses
Chaine de connection sql server c# - Meilleures réponses
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 :-)
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;
}
}
********************************************
**********************************************
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.
**********************************************
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.