有句代码不懂请高手指点一二
private bool ValidLogin(string username, string password)
{
//数据库放到项目目录/bin/debug 目录下
bool result = false;
OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\毕业设计.mdb");
string strSql = "select * from 登陆表 where uID = @uid and pwd = @pwd";
OleDbCommand cmd = new OleDbCommand(strSql, cn);
cmd.Parameters.AddWithValue("@uid", tbx_uId.Text);
cmd.Parameters.AddWithValue("@pwd", tbx_pwd.Text);//这里不太懂请高手指教
cn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
result = true;
}
cn.Close();
return result;
}
------解决方案--------------------把你的两个textbox的内容传入到这两个参数中去。
------解决方案--------------------就是给@uid和@pwd传值
select * from 登陆表 where uID = ‘tbx_uId.Text’ and pwd = ‘tbx_pwd.Text’了
------解决方案--------------------你可以到msdn上去找找关于 sqlcommand 对Parameters更详细的解释。。其实这也没什么了解的。。。总之一句话,添加参数到cmd中去用来执行那个sql语句。。。
------解决方案--------------------Parameters参数集合,Parameters.AddWithValue()表示增加一个参数到这个集合中,在这里的目的是用来对sql语句传入两个参数进行查询。如果存在这条记录,说明登录成功!
------解决方案--------------------cmd.Parameters.AddWithValue("@uid", tbx_uId.Text);
cmd.Parameters.AddWithValue("@pwd", tbx_pwd.Text);
就是
@uid = tbx_uId.Text
@pwd = tbx_pwd.Text
------解决方案--------------------就如执行存储过程,将sql传入值变量化,能有效解决sql语句中含有转移字符的作用。
------解决方案--------------------楼上说的都没错,另外再补充一点
OleDbCommand cmd = new OleDbCommand(strSql, cn);
cmd.Parameters.AddWithValue("@uid", tbx_uId.Text);
cmd.Parameters.AddWithValue("@pwd", tbx_pwd.Text);
通过cmd.Parameters.AddWithValue("@uid", tbx_pwd.Text);传递的参数,在执行数据库命令的过程中可以过滤
用户输入的数据中的敏感符号,比如"<",">"等等,防止用户SQL注入式攻击!
------解决方案--------------------
------解决方案--------------------赞同
------解决方案--------------------赞同