关于VC++ 连接SQL数据库做登陆界面有关问题

关于VC++ 连接SQL数据库做登陆界面问题
我已做好数据库,password储存了用户数据和密码,我做了个登陆界面,验证密码,具体我该如何写代码查询密码并且验证。我写了一个,但是每次都验证不通过!回答好的追加分数
void CStu_login::OnOK() 
{  
CDatabase db; 
db.Open(_T("DB_xuanke"),FALSE,FALSE,_T("ODBC;"),FALSE); 
CRecordset rs(&db); // 构造记录集
UpdateData(TRUE);
CString sqlstr;
sqlstr.Format("select * from password where 学号=%ld",m_user);
CRecordset rs1(&db);
rs1.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr);
if(rs1.IsEOF())
{
MessageBox("学号输入有误,无此学生!!!");
return;
}
sqlstr.Format("select * from password where 学号=%ld and 密码='%s'",m_user,m_password);
rs.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr);
if(rs.GetRecordCount()==0)
{
MessageBox("密码输入错误!!!");
}
else
{  
  CString temp;
  temp.Format("update password set flag=%d where 学号=%ld",1,m_user);
db.ExecuteSQL(temp);
db.Close();
OnOK();
   
}
}

------解决方案--------------------
把sql语句先直接放到数据库里面运行一下,看能不能找到,如果不能找到,那肯定是sql语句有问题,如果能找到,再查找是否程序问题。
------解决方案--------------------
建议单步跟一下,你首先要确保你connection没问题,然后才能去看SQL语句有没有问题。
------解决方案--------------------
需要配置ODBC吧?配置得对不?
------解决方案--------------------
可又参考:
void CLYPersonManageDlg::OnBnClickedBtnLogin()
{
// TODO: 在此添加控件通知处理程序代码
//链接数据库
LyDataBase mdatabase;

if (mdatabase.m_pConnection == NULL)
{
//可以连接数据库
mdatabase.InitDataBase();
}
int rowNum = 0;
CString sql;
((CEdit*)GetDlgItem(IDC_EDIT_UserName))->GetWindowText(userName);
((CEdit*)GetDlgItem(IDC_EDIT_Password))->GetWindowText(password);
LyDataBase database;
sql.Format("SELECT Password FROM TB_PERSON_INFOS WHERE UserName='%s'",userName);
database.Execute(sql);
rowNum = database.GetRecordCount();

if (rowNum != 1)//用户名不存在
{
AfxMessageBox("用户名不存在!");
}
else// 用户名存在的情况下
{
database.MoveFirst();
CString dbPassword;
dbPassword = database.GetFieldVal("Password");

if (dbPassword.Compare(password) != 0)//密码错误
{
AfxMessageBox("密码错误!");
}
else//用户名密码都正确 可以登录
{
SetDlgItemText(IDC_EDIT_UserName,"");
SetDlgItemText(IDC_EDIT_Password,"");
OnOK();
CSelectModule selDlg;
selDlg.DoModal();
}
}
}
------解决方案--------------------
断点调试,看看sqlstr.Format("select * from password where 学号=%ld",m_user);
这个sql语句的实际值,拷贝到数据库查询分析器里执行,是否有结果。。。
------解决方案--------------------
首先,提示里面你不要弄那个 MessageBox("学号输入有误,无此学生!!!");
return;
这样安全度不高。你去试试哪个邮箱或者啥的,提示你到底是账户还是密码输入错了?
无论是账号还是密码错了,直接提示“账号或密码有误,请重新输入”,无论哪个,错3次就退出或者别的什么。


然后,你只需要一个查询
sql.FORMAT(select username,password from userbook where username = '%s'and password = '%s'",UserName,PassWord)
然后把返回结果 与输入的值比较。即可

------解决方案--------------------
我把我的给你吧。。。不过我用的是MySql和VC。但是我想基本的思路都差不多吧。
有些mysql的函数是我自己把MYSQL提供的一些C-api函数重新封装了一下。你不用管理。
BOOL CLogIn::OnLiButtonLogin() 
{
//********登陆按钮*********
UpdateData(TRUE);
//判断账户密码是否输入
if(m_strUserName.IsEmpty())
{
AfxMessageBox("请输入用户名");
return FALSE;
}
if(m_strPassWord.IsEmpty())