Je rencontre un problème avec la création de code de produit en récursivité. Ce que je veux faire est:Générer du code avec récursion
J'entre le code 1000
-Si le code existe dans la base de données regenerateCode (code de chaîne)
d'insertion -else dans la base de données
code:
(...) if (codeExist) CodeTB.Text = regénèreCode (chaîne àParse); // toParse = 1000
string regenerateCode(string toParse)
{
string helper = "";
int parseCode = int.Parse(toParse);
helper = new string('0', 4 - parseCode.ToString().Length);
helper += parseCode + 1;
using (SqlConnection conn = new SqlConnection(cString.c_String))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("SELECT Product.productID FROM Product " +
"WHERE Product.PLU = '" + helper + "' ", conn))
{
using (SqlDataReader rdr = cmd.ExecuteReader())
{
if (rdr.HasRows)
{
// if code still exist in database, regenerate it
regenerateCode(helper);
}
else
{
//else return code
return helper;
}
}
}
}
return helper;
}
En fait, il fonctionne très bien avec l'exemple: 1000 (existe) 1001 (existe) 1002 (existe pas, insert), mais lorsque le code = 1002, il passe en ligne avec else {return helper;} et je ne sais pas pourquoi retourner à la méthode regenerateCode().
Des idées?
Vous avez dit que lorsque le code = 1002, il va dans else clause ... il * should * do ... vous avez également dit '1002 (n'existe pas)' ... donc 'rdr.HasRows' = faux. Quel est exactement votre problème? – Sheridan
J'ai dans la base de données des codes existants: 1001, 1002, 1003. Donc, le prochain devrait être 1004. Quand je mets '1001' dans la zone de texte de code il va exactement là: regenerateCode (helper); // 1001, regenerateCode (helper); // 1002, regenerateCode (helper); // 1003, regenerateCode (helper); // 1004 - à ce moment, le code de chaîne est correct et il devrait renvoyer le code 1004, mais il ne le fait pas, il suffit de: retourner l'aide; // dernière ligne, et à nouveau dans regenerateCode (helper); // 1001 regenerateCode (helper); // 1002 – user13657
Essayez-vous simplement de trouver le numéro de «code» le plus élevé dans la base de données, ou y a-t-il des «trous» dans la séquence de numéros de code que vous essayez de trouver? – Sheridan