Pas de problème majeur si ce n'est qu'elle à besoin d'être étoffée pour
vérifier le contenu de la commande select. Avec ce code mon programme
tourne bien et fait ce que j'attends de lui tant que la commande est bien
une commande sql valide de type select.
Maintenant si j'étoffe le code pour vérifier la validité ca ne marche plus.
if((clause=="select" || clause=="show") && _command_type=CommandType.Query)
{
vc = s;
} else if((clause!="select" && clause!="show") &&
_command_type=CommandType.Table) {
vc = "select * from "+s;
} else {
vc="";
throw new DataSetException("Neither a select query or table name !");
}
return vc;
}
La fonction de vérification est complète mais si je mets ne serait-ce qu'une
ligne ca plante quand même. Par contre si j'assigne directement s à vc, ça
marche à nouveau.
> Question : Pourquoi la moindre ligne de code intermédiaire fait tout planter ?
Remarque : Ca ne plante pas réellement (pas de message) mais le programme ne se déroule pas comme prévu.
Bonjour,
Etes-vous vraiment certain du bon fonctionnement de votre méthode ValidateSelectCommand ? Je me concentrerais là dessus.
J'ai peut être mal lu mais il me semble qu'un test de flux (aucune fonctionnalité supplémentaire) n'a pa été cité:
*: notez l'utilisation de 'this' pour être certain qu'il se refère à l'instance courante ------------------------------------------------------------------ public string SelectCommandText { get{return this._select_command_text;} set { if(this._select_command_text!=value) { this._select_command_text=ValidateSelectCommand(value); } } }
private string ValidateSelectCommand(string s) { return("VALID" + s); //avec ça, on est certain que cela marche } ------------------------------------------------------------------
Si ce test fonctionne, on aura déjà isolé le problème: il vient de l'implémentation de ValidateSelectCommand. Sinon..... on envisagera une plus longue réflexion ; )
.antoine
--
------------oOoo---Ôô----ooOo--------------------------- Antonio FONTES (well, me, actually) http://www.nxtg.net/saphyr/ (tout et rien en français) http://www.nxtg.net/is/ (blog - développeur web) E-mail: -------------------------------------------------------------
> Question : Pourquoi la moindre ligne de code intermédiaire fait tout
planter ?
Remarque : Ca ne plante pas réellement (pas de message) mais le programme ne
se déroule pas comme prévu.
Bonjour,
Etes-vous vraiment certain du bon fonctionnement de votre méthode
ValidateSelectCommand ? Je me concentrerais là dessus.
J'ai peut être mal lu mais il me semble qu'un test de flux (aucune fonctionnalité
supplémentaire) n'a pa été cité:
*: notez l'utilisation de 'this' pour être certain qu'il se refère à l'instance
courante
------------------------------------------------------------------
public string SelectCommandText
{
get{return this._select_command_text;}
set
{
if(this._select_command_text!=value)
{
this._select_command_text=ValidateSelectCommand(value);
}
}
}
private string ValidateSelectCommand(string s)
{
return("VALID" + s); //avec ça, on est certain que cela marche
}
------------------------------------------------------------------
Si ce test fonctionne, on aura déjà isolé le problème: il vient de l'implémentation
de ValidateSelectCommand. Sinon..... on envisagera une plus longue
réflexion ; )
.antoine
--
------------oOoo---Ôô----ooOo---------------------------
Antonio FONTES (well, me, actually)
http://www.nxtg.net/saphyr/ (tout et rien en français)
http://www.nxtg.net/is/ (blog - développeur web)
E-mail: prenom.nom@mondomaine.net
-------------------------------------------------------------
> Question : Pourquoi la moindre ligne de code intermédiaire fait tout planter ?
Remarque : Ca ne plante pas réellement (pas de message) mais le programme ne se déroule pas comme prévu.
Bonjour,
Etes-vous vraiment certain du bon fonctionnement de votre méthode ValidateSelectCommand ? Je me concentrerais là dessus.
J'ai peut être mal lu mais il me semble qu'un test de flux (aucune fonctionnalité supplémentaire) n'a pa été cité:
*: notez l'utilisation de 'this' pour être certain qu'il se refère à l'instance courante ------------------------------------------------------------------ public string SelectCommandText { get{return this._select_command_text;} set { if(this._select_command_text!=value) { this._select_command_text=ValidateSelectCommand(value); } } }
private string ValidateSelectCommand(string s) { return("VALID" + s); //avec ça, on est certain que cela marche } ------------------------------------------------------------------
Si ce test fonctionne, on aura déjà isolé le problème: il vient de l'implémentation de ValidateSelectCommand. Sinon..... on envisagera une plus longue réflexion ; )
.antoine
--
------------oOoo---Ôô----ooOo--------------------------- Antonio FONTES (well, me, actually) http://www.nxtg.net/saphyr/ (tout et rien en français) http://www.nxtg.net/is/ (blog - développeur web) E-mail: -------------------------------------------------------------
Drakkhen
Bonjour, il faudrait etre sur du code dans ValidateSelectCommand.
Par exemple, je ne comprends pas que ceci puisse compiler dans une clause if ! _command_type=CommandType.Query
Pas de problème majeur si ce n'est qu'elle à besoin d'être étoffée pour vérifier le contenu de la commande select. Avec ce code mon programme tourne bien et fait ce que j'attends de lui tant que la commande est bien une commande sql valide de type select.
Maintenant si j'étoffe le code pour vérifier la validité ca ne marche plus.
if((clause=="select" || clause=="show") && _command_type=CommandType.Query) { vc = s; } else if((clause!="select" && clause!="show") && _command_type=CommandType.Table) { vc = "select * from "+s; } else { vc=""; throw new DataSetException("Neither a select query or table name !"); }
return vc; }
La fonction de vérification est complète mais si je mets ne serait-ce qu'une ligne ca plante quand même. Par contre si j'assigne directement s à vc, ça marche à nouveau.
Pas de problème majeur si ce n'est qu'elle à besoin d'être étoffée pour
vérifier le contenu de la commande select. Avec ce code mon programme
tourne bien et fait ce que j'attends de lui tant que la commande est bien
une commande sql valide de type select.
Maintenant si j'étoffe le code pour vérifier la validité ca ne marche
plus.
if((clause=="select" || clause=="show") &&
_command_type=CommandType.Query)
{
vc = s;
} else if((clause!="select" && clause!="show") &&
_command_type=CommandType.Table) {
vc = "select * from "+s;
} else {
vc="";
throw new DataSetException("Neither a select query or table name !");
}
return vc;
}
La fonction de vérification est complète mais si je mets ne serait-ce
qu'une
ligne ca plante quand même. Par contre si j'assigne directement s à vc, ça
marche à nouveau.
Pas de problème majeur si ce n'est qu'elle à besoin d'être étoffée pour vérifier le contenu de la commande select. Avec ce code mon programme tourne bien et fait ce que j'attends de lui tant que la commande est bien une commande sql valide de type select.
Maintenant si j'étoffe le code pour vérifier la validité ca ne marche plus.
if((clause=="select" || clause=="show") && _command_type=CommandType.Query) { vc = s; } else if((clause!="select" && clause!="show") && _command_type=CommandType.Table) { vc = "select * from "+s; } else { vc=""; throw new DataSetException("Neither a select query or table name !"); }
return vc; }
La fonction de vérification est complète mais si je mets ne serait-ce qu'une ligne ca plante quand même. Par contre si j'assigne directement s à vc, ça marche à nouveau.
Question : Pourquoi la moindre ligne de code intermédiaire fait tout planter ?
Remarque : Ca ne plante pas réellement (pas de message) mais le programme ne se déroule pas comme prévu.
Merci d'avance
David.
Akades
Messenger of the red snake mountain wrote:
Si ce test fonctionne, on aura déjà isolé le problème: il vient de l'implémentation de ValidateSelectCommand. Sinon..... on envisagera une plus longue réflexion ; )
.antoine
Ca ne marche pas plus.
Dorénavant, j'utilise la méthode indiquée dans mon second post. A savoir une propriété en lecture seule et une méthode pour simuler le Set de la propriété. Et c'est toujours aussi étrange.
// Champ privé à la classe private string _select_command_text = "";
// Propriété en lecture seule public string SelectCommandText {get{return this._select_command_text;}}
// Méthode simulant le Set qui fonctionne pulbic void SetSelectCommand(string s) { string vc = "";
int p = s.IndeOf(" ");
//suite du code en commentaire
vc = s;
this._select_command_text = vc; }
// Méthode simulant le Set qui ne fonctionne pas pulbic void SetSelectCommand(string s) { string vc = "";
int p = s.IndeOf(" "); string clause = s.Substring(0, p);
//suite du code en commentaire
vc = s;
this._select_command_text = vc; }
Je continue à chercher ...
@++
Messenger of the red snake mountain wrote:
Si ce test fonctionne, on aura déjà isolé le problème: il vient de
l'implémentation de ValidateSelectCommand. Sinon..... on envisagera une
plus longue réflexion ; )
.antoine
Ca ne marche pas plus.
Dorénavant, j'utilise la méthode indiquée dans mon second post. A savoir une
propriété en lecture seule et une méthode pour simuler le Set de la
propriété. Et c'est toujours aussi étrange.
// Champ privé à la classe
private string _select_command_text = "";
// Propriété en lecture seule
public string SelectCommandText {get{return this._select_command_text;}}
// Méthode simulant le Set qui fonctionne
pulbic void SetSelectCommand(string s) {
string vc = "";
int p = s.IndeOf(" ");
//suite du code en commentaire
vc = s;
this._select_command_text = vc;
}
// Méthode simulant le Set qui ne fonctionne pas
pulbic void SetSelectCommand(string s) {
string vc = "";
int p = s.IndeOf(" ");
string clause = s.Substring(0, p);
Si ce test fonctionne, on aura déjà isolé le problème: il vient de l'implémentation de ValidateSelectCommand. Sinon..... on envisagera une plus longue réflexion ; )
.antoine
Ca ne marche pas plus.
Dorénavant, j'utilise la méthode indiquée dans mon second post. A savoir une propriété en lecture seule et une méthode pour simuler le Set de la propriété. Et c'est toujours aussi étrange.
// Champ privé à la classe private string _select_command_text = "";
// Propriété en lecture seule public string SelectCommandText {get{return this._select_command_text;}}
// Méthode simulant le Set qui fonctionne pulbic void SetSelectCommand(string s) { string vc = "";
int p = s.IndeOf(" ");
//suite du code en commentaire
vc = s;
this._select_command_text = vc; }
// Méthode simulant le Set qui ne fonctionne pas pulbic void SetSelectCommand(string s) { string vc = "";
int p = s.IndeOf(" "); string clause = s.Substring(0, p);
//suite du code en commentaire
vc = s;
this._select_command_text = vc; }
Je continue à chercher ...
@++
Akades
Drakkhen wrote:
Bonjour, il faudrait etre sur du code dans ValidateSelectCommand.
Par exemple, je ne comprends pas que ceci puisse compiler dans une clause if !
C'est parce qu'il n'y a pas la faute dans mon code ! Désolé j'ai retapé à la mano au lieu de copier/coller donc cette erreur s'est glissée dedans. Mais ca doit être la seule.
De plus, si j'ecris SeLect * FROM MaTable; Alors cela ne passera pas simplement a cause de la casse des caracteres.
Pas de problème de ce côté tout est en minuscule.
Merci quand même
Drakkhen wrote:
Bonjour, il faudrait etre sur du code dans ValidateSelectCommand.
Par exemple, je ne comprends pas que ceci puisse compiler dans une clause
if !
C'est parce qu'il n'y a pas la faute dans mon code !
Désolé j'ai retapé à la mano au lieu de copier/coller donc cette erreur
s'est glissée dedans. Mais ca doit être la seule.
De plus, si j'ecris
SeLect * FROM MaTable;
Alors cela ne passera pas simplement a cause de la casse des caracteres.
Bonjour, il faudrait etre sur du code dans ValidateSelectCommand.
Par exemple, je ne comprends pas que ceci puisse compiler dans une clause if !
C'est parce qu'il n'y a pas la faute dans mon code ! Désolé j'ai retapé à la mano au lieu de copier/coller donc cette erreur s'est glissée dedans. Mais ca doit être la seule.
De plus, si j'ecris SeLect * FROM MaTable; Alors cela ne passera pas simplement a cause de la casse des caracteres.
Pas de problème de ce côté tout est en minuscule.
Merci quand même
Akades
Akades wrote:
Voici le bon code pour une propriété en lecture/écriture. J'ai juste testé si p>0 avant d'assigner la variable clause. Et le plus important, vc = value dans les deux cas testés. Dans tous les autres cas je lance une exception.
public string SelectCommandText { get{return _select_command_text;} set{ if(_select_command_text!=value) { int p = value.IndexOf(" "); string vc = ""; string clause = ""; if(p>0) clause = value.Substring(0, p); if((clause=="select" || clause=="show") && _command_type==CommandType.Query) { vc=value; } else if ((clause!="select" && clause!="show") && _command_type==CommandType.Table) { vc=value; } else { throw new DataSetException("Neither a select query or table !"); } _select_command_text = vc; } } }
Merci quand même :)
@++
Akades wrote:
Voici le bon code pour une propriété en lecture/écriture.
J'ai juste testé si p>0 avant d'assigner la variable clause.
Et le plus important, vc = value dans les deux cas testés. Dans tous les
autres cas je lance une exception.
public string SelectCommandText {
get{return _select_command_text;}
set{
if(_select_command_text!=value) {
int p = value.IndexOf(" ");
string vc = "";
string clause = "";
if(p>0) clause = value.Substring(0, p);
if((clause=="select" || clause=="show")
&& _command_type==CommandType.Query) {
vc=value;
} else if ((clause!="select" && clause!="show")
&& _command_type==CommandType.Table) {
vc=value;
} else {
throw new DataSetException("Neither a select query or
table !");
}
_select_command_text = vc;
}
}
}
Voici le bon code pour une propriété en lecture/écriture. J'ai juste testé si p>0 avant d'assigner la variable clause. Et le plus important, vc = value dans les deux cas testés. Dans tous les autres cas je lance une exception.
public string SelectCommandText { get{return _select_command_text;} set{ if(_select_command_text!=value) { int p = value.IndexOf(" "); string vc = ""; string clause = ""; if(p>0) clause = value.Substring(0, p); if((clause=="select" || clause=="show") && _command_type==CommandType.Query) { vc=value; } else if ((clause!="select" && clause!="show") && _command_type==CommandType.Table) { vc=value; } else { throw new DataSetException("Neither a select query or table !"); } _select_command_text = vc; } } }