C#代码:
string str = "Data Source=(LocalDB)\\MSSQLLocalDB;";
str += "AttachDbFilename=|DataDirectory|DinoData.mdf;";
str += "Integrated Security= True";
SqlConnection c;
c = new SqlConnection(str);
SqlCommand Cdd = new SqlCommand("SELECT COUNT(*) FROM [User] WHERE UserName LIKE @Username;", c);
Cdd.Parameters.AddWithValue("@Username", txtuser.Text);
c.Open();
int NameExist = (int)Cdd.ExecuteScalar();
c.Close();
if (NameExist > 0)
{
CVName.IsValid = true;
if ((bool)Session["Conect"])
{
SqlCommand getlev = new SqlCommand("SELECT level FROM [User] WHERE Username like @user", c);
getlev.Parameters.AddWithValue("@user", txtuser.Text);
c.Open();
int a = (int)getlev.ExecuteScalar();
c.Close();
if (a>5)
{
CVSemi.IsValid = false;
if (a >= 10)
{
CVmax.IsValid = false;
}
else
CVmax.IsValid = true;
}
else
{
CVSemi.IsValid = true;
}
}
}
else
{
CVName.IsValid = false;
txtuser.CssClass = "err";
}
if (Page.IsValid)
{
/*Something happen*/
}
验证器CVmax始终为真
即使我把if转到:
if (a >= 1)
我更新代码CVmax始终有效为什么? 我尝试做所有事情但没有成功请帮助
答案 0 :(得分:0)
我会运行调试器以确定,但是你确定它没有跳过第二个&
吗?
\
正如@DavidG所说,你的代码格式很差。在组织了一下之后,看起来你的一些IF甚至没有打。在代码段中,您没有替代if
位,因此需要输入的是正确的用户名...
所以,说实话,请废弃代码并以正确的格式和if (NameExist > 0) {
CVName.IsValid = true; // here you set the value to true.
// supposing this if doesn't trigger, CVmax will stay true.
if ((bool)Session["Conect"])
{
SqlCommand getlev = new SqlCommand("SELECT level FROM [User] WHERE Username like @user", c);
getlev.Parameters.AddWithValue("@user", txtuser.Text);
c.Open();
int a = (int)getlev.ExecuteScalar();
c.Close();
if (a>5){
CVSemi.IsValid = false;
if (a >= 10) {
CVmax.IsValid = false;
}
else {
CVmax.IsValid = true;
}
else
{
CVSemi.IsValid = true;
}
else
{
CVName.IsValid = false;
txtuser.CssClass = "err";
}
重新开始。
答案 1 :(得分:-1)
因为我使用了ORM之外的其他东西已经有一段时间了,但我提出以下建议:
1)查看您处理ExecuteScalar响应的方式,请参见[此处]:https://stackoverflow.com/a/1999031/6415885
2)由于空响应在这里是一个明显的可能性,是否是ExecuteScalar的装箱,强制0响应?
int a = (int)getlev.ExecuteScalar();
或应该是
int? a = (int?)getlev.ExecuteScalar();
if (a != null)
{
if (a==0) {CVmax.IsValid = false;}
}
else
{
CVmax.IsValid = false
}