我想让用户以用户名和密码的形式 进入SqlServer2000的数据库里。
void CClerk_trainedDlg::OnSubmit()
{
.........(函数,变量定义省略)
.........
UpdateData(TRUE);
strQuery = "select * from Clerk_USER_PSWD where TMS_USER =1 and TMS_PSWD=1 ";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int nTotalStu = theApp.m_pADOSet ->GetRecordCount();
if (nTotalStu <= 0)
AfxMessageBox("没有您的用户记录,请重新输入用户名,密码!");
theApp.m_pADOSet ->MoveFirst();
........
}
bool CClerk_trainedApp::ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL)
{
if ( ADOSet->State == adStateOpen) ADOSet->Close();
try
{
ADOSet->Open(strSQL, ADOConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown);
//MessageBox(ADOSet->State);
return true;
}
catch(_com_error &e)
{
CString err;
err.Format("ADO Error: %s",(char*)e.Description());
AfxMessageBox(err);
return false;
}
说明: 当调用 ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL) 时,返回值为true
sql数据库里的相应的用户名和密码也是正确地
但是 返回的记录值nTotalStu 是-1 ,表明查询不到 记录。
求各位高人指点。谢谢 了。
void CClerk_trainedDlg::OnSubmit()
{
.........(函数,变量定义省略)
.........
UpdateData(TRUE);
strQuery = "select * from Clerk_USER_PSWD where TMS_USER =1 and TMS_PSWD=1 ";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int nTotalStu = theApp.m_pADOSet ->GetRecordCount();
if (nTotalStu <= 0)
AfxMessageBox("没有您的用户记录,请重新输入用户名,密码!");
theApp.m_pADOSet ->MoveFirst();
........
}
bool CClerk_trainedApp::ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL)
{
if ( ADOSet->State == adStateOpen) ADOSet->Close();
try
{
ADOSet->Open(strSQL, ADOConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown);
//MessageBox(ADOSet->State);
return true;
}
catch(_com_error &e)
{
CString err;
err.Format("ADO Error: %s",(char*)e.Description());
AfxMessageBox(err);
return false;
}
说明: 当调用 ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL) 时,返回值为true
sql数据库里的相应的用户名和密码也是正确地
但是 返回的记录值nTotalStu 是-1 ,表明查询不到 记录。
求各位高人指点。谢谢 了。
1 我是将adCmdTexta改为dCmdUnknown 也不行的。这个方法试过了
2 sql语句在查询分析器里是可用的。 语句没问题。
3 在易出错处,数据库连接,记录集打开处,我加入了AfxMessageBox监控,都是正常的。
问题解决:
我将theApp.m_pADOSet ->GetRecordCount();换成了m_pADOSet->endoffile ,程序正常了。
但是原因还是不清楚。
你在MSDN里搜索GetRecordCount,查看CRecordset::GetRecordCount里面有详细的说明。
The total number of records is only known after the user has moved beyond the last record.
而且,MoveLast还不行,必须重复的调用MoveNext。
自己看看吧,easy.
公司名称:深圳亚邮科技有限公司(http://www.szyy.com)公司简介:亚邮公司成立于1994年。公司以引进开发、研制邮政及金融自动化系统为主营业务,产品销售遍及全国各地。公司研制的亚邮商业信函名址数据库
多年来,公司与中国邮政局及金融自动化发展同步,紧跟世界科技步伐,与欧美及港、澳、台业界建立了广泛而密切的商务联系,被德国RENA公司、德国SCHEIDMANTEL公司指定为中国大陆地区总代理。
公司以专业水准在产品售后服务方面具有强大的技术支持能力,以快捷优质的终身服务制度受到用户的欢迎。
2000年10月,公司顺利通过了ISO9002国际质量体系认证,为未来更好地服务客户提供了有力的保证! 工作地点:北京市,海淀区。待遇:面议截止日期:2006年10月10日 程序员职位(1名):
要求精通 VC++,MFC,ADO ,SQL Server 数据库。有意者请将简历发送到 [email protected] ,在邮件标题中注明‘应聘VC++程序员’。(条件不符者请勿打扰,谢谢合作)