for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i][0].ToString() == txtName.Text)
{
//MessageBox.Show("登录成功"); if (dt.Rows[0][i].ToString() == txtPwd.Text)//验证密码
{
MessageBox.Show("登录成功");
frmMain main = new frmMain();
//main.power = power;
//main.Name = user;
main.Times = DateTime.Now.ToShortDateString();
main.Show();
this.Hide();
break;
}
else
{
MessageBox.Show("用户名或者密码错误,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
} }验证密码这里总是错误求解~~
{
if (dt.Rows[i][0].ToString() == txtName.Text)
{
//MessageBox.Show("登录成功"); if (dt.Rows[0][i].ToString() == txtPwd.Text)//验证密码
{
MessageBox.Show("登录成功");
frmMain main = new frmMain();
//main.power = power;
//main.Name = user;
main.Times = DateTime.Now.ToShortDateString();
main.Show();
this.Hide();
break;
}
else
{
MessageBox.Show("用户名或者密码错误,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
} }验证密码这里总是错误求解~~
解决方案 »
- c# Variant object 转换
- 办公人员都是利用office手工写文档的,我没有见过哪位办公人员会利用vba(包括用Office.Interop.Word)写文档。是否软件开发商开发出vba程序供多数办公人员使用?谁能举出目前市场上利用vba开发出来的程序或软件的例子。
- 求web service代码
- 什么定义了一个smalldatetime型的日期字段.会默认为:1900-01-01
- 执行aspx文件时,地址栏出现http:///
- 用VS2005调用Platform Builder写的Dll
- c# 如何操作CDO组件
- 两个窗体中方法如何互相调用?
- 第二次发出了:★★★★★★一个非常需要咨询的问题!(Help Me,please!)★★★★★★
- 谁有提供下载中文版的VS.NET
- C#中调用带参数的类
- C#QQ聊天 的问题
if (dt.Rows[0][i].ToString() == txtPwd.Text)//验证密码
你这数据库对象是如何定义的?
最好你还是自己先调试一下代码,检查关键点上的内容。
{
bool b=false;
for (int j = 0; j < dt.Rows.Count; j++)
{
if (dt.Rows[0][j].ToString() == txtPwd.Text)//验证密码
{
b=true;
MessageBox.Show("登录成功");
frmMain main = new frmMain();
//main.power = power;
//main.Name = user;
main.Times = DateTime.Now.ToShortDateString();
main.Show();
this.Hide();
break;
}
} if(!b)
{
MessageBox.Show("用户名或者密码错误,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
if (dt.Rows[0][i].ToString() == txtPwd.Text)//验证密码你这两段代码 我是这样理解的 你数据库里面 每一行的第一列是用户名 第一行的某一列是密码,但不知道那一列是密码。
dataSet.Tables[0].DefaultView.RowFilter = "F_UserName ='" + UserName + "' AND F_LoginPassword ='" + UserLogin + "'";
if (dataSet.Tables[0].Rows.Count > 0)
{
//登录验证成功
}
else
{
//验证失败
}
如果非要用,那就写吧:
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i][0].ToString() == txtName.Text.Trim())
{
if (dt.Rows[i][1].ToString() == txtPwd.Text.Trim())
{
MessageBox.Show("登录成功");
frmMain main = new frmMain();
main.Times = DateTime.Now.ToShortDateString();
main.Show();
this.Hide();
break;
}
else
{
MessageBox.Show("用户名或者密码错误,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
上面这个大概就是你的逻辑了,不过对于用户登录来说,一般都是要过滤用户输入的特殊字符,以免SQL注入,再者一般密码和数据库存储之间都是通过加密算法比对的,还有,要是想做的安全性高点,用户输入的地方一般限制字符长度等等,希望对你有帮助...
string pwd = string.Empty;
DataTable dt = new DataTable(); DataRow[] drs = dt.Select(string.Format("User='{0}' AND PWD ='{1}'", user, pwd));
if (drs.Length == 0)
{
//Invalid
}
else
{
//valid
}
DataRow[] rows = dt.Select(strWhere); // 从dt 中查询符合条件的记录;其中strWhere就是sql语句中where的部分
{
//MessageBox.Show("登录成功"); if (dt.Rows[0][i].ToString() == txtPwd.Text)//验证密码
dt.Rows[0][i].ToString(): lz应该理解这个意思,这里指的是取得数据第一行第多少列的数据来和密码进行对比。如果你的 密码列是在第三列 可以这样写:
if(dt.Rows[0][2].ToString()== txtPwd.Text){.....}