代码如下
private void BtnLogin_Click(object sender, EventArgs e)
{
if (combUName.Text.Trim() == "" || txtUserPassword.Text.Trim() == "")
{
MessageBox.Show("用户名或者密码不能为空,请重试!");
return;
}
userInfo = new UserInfo
{
UName = combUName.Text.Trim(),
UPwd = txtUserPassword.Text.Trim()
};
userInfo = userInfoBll.SearchUserInfo(userInfo);
if (userInfo != null)
{
this.Visible = false;
DelayLoginTimer.Enabled = false;
using (MainFrm mainFrm = new MainFrm(userInfo))
{
mainFrm.ShowDialog();
}
}
else
{
MessageBox.Show("用户名或者密码错误或者不存在,请重试!");
}
}
效果如图:
我逐一排查,发现是数据库查询这段出现了问题,
userInfo = userInfoBll.SearchUserInfo(userInfo);
我注释掉这句话,就没问题,但是我看我数据库查询代码,没有任何特别之处啊。
public UserInfo SearchUserInfo(UserInfo userinfo)
{
userInfoList = userInfoDal.Find(userinfo);
if (userInfoList == null) return null;
return userInfoList[0];
}
public List<UserInfo> Find(UserInfo userinfo)
{
try
{
string cmdstr = "select * from UserInfo where UName='" + userinfo.UName + "' and UPwd='" + userinfo.UPwd + "'";
DataTable dt = AccessHelper.Search(constr, cmdstr);
if (dt == null|| dt.Rows.Count <= 0) return null;
List<UserInfo> userInfoList = new List<UserInfo>();
foreach (DataRow row in dt.Rows)
{
userInfo = new UserInfo
{
UID = Convert.ToInt32(row["UID"]),
UName = row["UName"].ToString(),
UPwd = row["UPwd"].ToString(),
UType = Convert.ToInt32(row["UType"]),
UOther = row["UOther"].ToString()
};
userInfoList.Add(userInfo);
}
return userInfoList;
}
catch (Exception ex)
{
string errorfile = Logs.GetCurSourceFileName();
int errorline = Logs.GetLineNum();
Logs.WriteLog(ex.Message, errorfile, errorline, 2);
return null;
}
}
请各位大哥们指点一下。