一个简单的数据库问题 ~用户登陆界面 ADO 控制ACCESS 在一个对话框中加一个按纽空间 CAPTION 是"登陆"想在 该按纽的单击事件中 把编辑框中的字符串与数据库中的UESERID 值比较如果相等就登陆成功,否则 失败\想知道单击事件函数中的代码,数据库连接没问题.在先等! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据库连接没问题??那就取出进行比较阿http://www.vckbase.com/document/viewdoc/?id=496 ...楼主想问的问题比较怪啊.你是想知道怎么取数据呢?还是想知道怎么比较?1. 连接数据库: OK2. 取数据 : 0k3. 比较 : OK 这几步里边最没有技术含量的就是第三步了... 打开数据库_RecordsetPtr precordprecord->Open(_variant_t(sql),"dsn=yourdsn", adOpenUnspecified, adLockUnspecified, -1);取数_variant_t var=precord->GetCollect("UESERID");再和edit的值比较 void CDlgLogin::OnOK() { // TODO: Add extra validation here BOOL bLogOn=FALSE; CString sUserPassWord, sPurview,sUserName,sInputPassWord; LRunSql m_runsql;//我封装后的ADO,你根据你自己的改一下 CString sql; _variant_t value; CString sError; if(!UpdateData()) return; // 更新数据变量 this->m_editPassWord.GetWindowText(sInputPassWord); this->m_editUserName.GetWindowText(sUserName); CJxcApp* App=(CJxcApp*)AfxGetApp(); sql.Format("select 登录密码,权限名称 from 权限表 where 员工编号='%s'",sUserName); if(m_runsql.RunSQL(sql,adCmdText)) { value=m_runsql.m_recordset->Collect["登录密码"]; if(value.vt!=VT_NULL) sUserPassWord=(char*)(_bstr_t)value; value=m_runsql.m_recordset->GetCollect("权限名称"); if(value.vt!=VT_NULL) sPurview=(char*)(_bstr_t)value; sUserPassWord.Replace(" ",""); sPurview.Replace(" ",""); if(sUserPassWord==sInputPassWord) { App->m_sUserName=sUserName; App->m_sPurview=sPurview; bLogOn=TRUE; } else { //sError.Format("%s,%s",sUserPassWord,sInputPassWord); 调试出错信息用 //MessageBox(sError); sError="请重新输入密码。\n注意大小写!","密码错误"; this->m_editPassWord.SetFocus(); } } else { sError="请确认用户名大小写是否正确!","无此用户"; this->m_editUserName.SetFocus(); } if(bLogOn) EndDialog(IDOK); else { m_iLogOnCount++; if(m_iLogOnCount>=3) this->EndDialog(0); else MessageBox(sError); }// CDialog::OnOK();} CString strSql;strSql.Format("select * from table name='%s' and pwd='%s'",strName,strPwd);_RecordsetPtr ptr;用ptr去打开数据库,如果有记录存在,则登录成功,否则失败。 窗口问题 关于copyfile函数,复制局域网文件问题 关于插入记录 帮忙看下这个是什么错误哦 动态连接中调用第三方静态连接库的问题 如何在vc6中使用xmlhttp? 如何从excel表中删除数据 关于代码AfxMessageBox(_T("Couldn't create the file!")),请教! VC调用word时,怎样才能隐藏word的某些菜单项 偶问两个简单的问题,希望大家帮帮忙 [求助]ADO 操作 oracle的序列 socket 如何传送非文本文件
那就取出进行比较阿http://www.vckbase.com/document/viewdoc/?id=496
楼主想问的问题比较怪啊.你是想知道怎么取数据呢?还是想知道怎么比较?1. 连接数据库: OK
2. 取数据 : 0k
3. 比较 : OK
这几步里边最没有技术含量的就是第三步了...
_RecordsetPtr precord
precord->Open(_variant_t(sql),"dsn=yourdsn", adOpenUnspecified, adLockUnspecified, -1);
取数
_variant_t var=precord->GetCollect("UESERID");
再和edit的值比较
{
// TODO: Add extra validation here
BOOL bLogOn=FALSE;
CString sUserPassWord, sPurview,sUserName,sInputPassWord; LRunSql m_runsql;//我封装后的ADO,你根据你自己的改一下
CString sql;
_variant_t value; CString sError;
if(!UpdateData()) return;
// 更新数据变量
this->m_editPassWord.GetWindowText(sInputPassWord);
this->m_editUserName.GetWindowText(sUserName); CJxcApp* App=(CJxcApp*)AfxGetApp(); sql.Format("select 登录密码,权限名称 from 权限表 where 员工编号='%s'",sUserName);
if(m_runsql.RunSQL(sql,adCmdText))
{ value=m_runsql.m_recordset->Collect["登录密码"];
if(value.vt!=VT_NULL)
sUserPassWord=(char*)(_bstr_t)value;
value=m_runsql.m_recordset->GetCollect("权限名称");
if(value.vt!=VT_NULL)
sPurview=(char*)(_bstr_t)value;
sUserPassWord.Replace(" ","");
sPurview.Replace(" ","");
if(sUserPassWord==sInputPassWord)
{
App->m_sUserName=sUserName;
App->m_sPurview=sPurview;
bLogOn=TRUE;
}
else
{ //sError.Format("%s,%s",sUserPassWord,sInputPassWord); 调试出错信息用
//MessageBox(sError);
sError="请重新输入密码。\n注意大小写!","密码错误";
this->m_editPassWord.SetFocus();
}
}
else
{
sError="请确认用户名大小写是否正确!","无此用户";
this->m_editUserName.SetFocus();
} if(bLogOn) EndDialog(IDOK);
else
{
m_iLogOnCount++;
if(m_iLogOnCount>=3)
this->EndDialog(0);
else
MessageBox(sError);
}
// CDialog::OnOK();
}
strSql.Format("select * from table name='%s' and pwd='%s'",strName,strPwd);
_RecordsetPtr ptr;
用ptr去打开数据库,如果有记录存在,则登录成功,否则失败。