编译时if语句条件符合时为什么还要检查else语句呢? sql密码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你明明是两个独产的if语句。检查到if ... admin以后,再执行的下面的if else中的else 在中间的 if 前面分别加上 else 语法逻辑有问题三个if对应同一个else?不想写很多个if...else,可以加个bool变量,比如bool checkOk=true如果前面错误了,就将它设置为false之后的每个过程都判断checkOk。或者如果判断不通过就直接return。不过不建议这么做。return太多会导致逻辑混乱。 private void login_btn_Click(object sender, EventArgs e) { if(user.Text.Trim()== string.Empty || psw.Text.Trim()== string.Empty) { MessageBox.Show("请输入完整信息!"); } if (user.Text.Trim() == "admin" && psw.Text.Trim() == "admin")//管理员测试账号 { Thread t = new Thread(new ThreadStart(delegate { Application.Run(new AdminForm()); })); t.Start(); this.Dispose(true); // MessageBox.Show(this.ToString()); } if (user.Text.Trim() == "Jake" && psw.Text.Trim() == "1991")//普通用户测试账号 { Thread t = new Thread(new ThreadStart(delegate { Application.Run(new ClientForm()); })); t.Start(); this.Dispose(true); // MessageBox.Show(this.ToString()); } else { sql = "select * from KHB where 卡号='" + user.Text + "'"; SqlConnection conn = new SqlConnection(connStr);//创建一个连接对象 conn SqlDataAdapter sda = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); sda.Fill(ds); string val = ds.Tables[0].Rows[0]["密码"].ToString(); if (val == psw.Text.Trim()) { MessageBox.Show("密码是正确的!"); } else { MessageBox.Show("密码输入有误,请重新输入!"); } // MessageBox.Show(val); } }=========================我给你用颜色标注了下,能明白吗?每种颜色是一个块。你的这个先执行if(user.Text.Trim()== string.Empty || psw.Text.Trim()== string.Empty) { MessageBox.Show("请输入完整信息!"); }然后执行if (user.Text.Trim() == "admin" && psw.Text.Trim() == "admin")//管理员测试账号 { Thread t = new Thread(new ThreadStart(delegate { Application.Run(new AdminForm()); })); t.Start(); this.Dispose(true); // MessageBox.Show(this.ToString()); }然后执行if (user.Text.Trim() == "Jake" && psw.Text.Trim() == "1991")//普通用户测试账号 { Thread t = new Thread(new ThreadStart(delegate { Application.Run(new ClientForm()); })); t.Start(); this.Dispose(true); // MessageBox.Show(this.ToString()); } else {这个if是false,所以,执行else指令了要解决很简单,第一个if外的if全换成elseif就可以了,我觉得你的目的也是这个。 神级代码,对if else去google下吧,打好基础。你这个代码,我只能说,你赢了 sql = "select * from KHB where 卡号='" + user.Text + "'"; SqlConnection conn = new SqlConnection(connStr);//创建一个连接对象 conn SqlDataAdapter sda = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); sda.Fill(ds); string val = ds.Tables[0].Rows[0]["密码"].ToString();说明这个sql语句的执行,没有查到你要的结果,应此Rows没有数据。当然报错。 执行完sql语句,要记得判断ds里是不是有数据,再执行下面的代码。难道用户随便输入个%%%%%%,系统里没有这个用户,你也让登录吗? Webservice能通过配置文件引用吗?? visual studio 2008英文版 卸载问题 Dictionary 动态转化为属性 outlook 与数据库 想要一个用C#写的控件或者开发包,谁有么? 高手帮忙~~遇到这样的问题怎么办? 关于贪吃蛇的问题 toolStrip的backcolor问题 谁能告诉我C#中怎样实现像C++上的友元函数和友元类 高级讨论..net下如何实现应用服务器? event 重复触发的问题 求助一组字符串排列函数
如果前面错误了,就将它设置为false之后的每个过程都判断checkOk。或者如果判断不通过就直接return。不过不建议这么做。return太多会导致逻辑混乱。
{
if(user.Text.Trim()== string.Empty || psw.Text.Trim()== string.Empty)
{
MessageBox.Show("请输入完整信息!");
}
if (user.Text.Trim() == "admin" && psw.Text.Trim() == "admin")//管理员测试账号
{
Thread t = new Thread(new ThreadStart(delegate { Application.Run(new AdminForm()); }));
t.Start();
this.Dispose(true);
// MessageBox.Show(this.ToString());
}
if (user.Text.Trim() == "Jake" && psw.Text.Trim() == "1991")//普通用户测试账号
{
Thread t = new Thread(new ThreadStart(delegate { Application.Run(new ClientForm()); }));
t.Start();
this.Dispose(true);
// MessageBox.Show(this.ToString());
}
else
{
sql = "select * from KHB where 卡号='" + user.Text + "'";
SqlConnection conn = new SqlConnection(connStr);//创建一个连接对象 conn
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
string val = ds.Tables[0].Rows[0]["密码"].ToString();
if (val == psw.Text.Trim())
{
MessageBox.Show("密码是正确的!");
}
else
{
MessageBox.Show("密码输入有误,请重新输入!");
}
// MessageBox.Show(val);
}
}
=========================
我给你用颜色标注了下,能明白吗?每种颜色是一个块。
你的这个先执行
if(user.Text.Trim()== string.Empty || psw.Text.Trim()== string.Empty)
{
MessageBox.Show("请输入完整信息!");
}然后执行
if (user.Text.Trim() == "admin" && psw.Text.Trim() == "admin")//管理员测试账号
{
Thread t = new Thread(new ThreadStart(delegate { Application.Run(new AdminForm()); }));
t.Start();
this.Dispose(true);
// MessageBox.Show(this.ToString());
}然后执行
if (user.Text.Trim() == "Jake" && psw.Text.Trim() == "1991")//普通用户测试账号
{
Thread t = new Thread(new ThreadStart(delegate { Application.Run(new ClientForm()); }));
t.Start();
this.Dispose(true);
// MessageBox.Show(this.ToString());
}
else
{
这个if是false,所以,执行else指令了要解决很简单,第一个if外的if全换成elseif就可以了,我觉得你的目的也是这个。
SqlConnection conn = new SqlConnection(connStr);//创建一个连接对象 conn
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
string val = ds.Tables[0].Rows[0]["密码"].ToString();
说明这个sql语句的执行,没有查到你要的结果,应此Rows没有数据。当然报错。
难道用户随便输入个%%%%%%,系统里没有这个用户,你也让登录吗?