我在递归创建产品代码时遇到问题。我想做的是:
我输入代码 1000
- 如果代码存在于数据库 regenerateCode(字符串代码)
-else 插入数据库
代码:
(...) if(codeExist) CodeTB.Text = regenerateCode(string toParse); //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;
}
实际上它适用于示例:1000(存在)1001(存在)1002(不存在,插入),但是当代码= 1002时,它与else {return helper;}一致并且不知道为什么要再次重新生成代码( ) 方法..
有任何想法吗?