while(!m_pRecordset->adoEOF)
{
n_count = m_pRecordset->GetRecordCount();
m_pRecordset->MoveNext();
}
ado的GetRecordCount()一开始总是返回-1,然后我再打开表之前加了
m_pRecordset->CursorLocation=adUseClient;
总是返回1,
我又再前面加了
m_pRecordset->CursorType=adOpenStatic;
可还总是返回1,为什么?
在网上看了有很多的循环的条件是这些的while(!m_pRecordset->ISEof()),奇怪的是我没有ISEof()这个方法,为啥?
{
m_pRecordset->MoveNext();
}
n_count = m_pRecordset->GetRecordCount();
select count(*) from T_admin where F_name='"+edt_username+"';
可是当我输入的用户名,数据库根本没有的时候,它还是返回1,这是什么原因呢?
我把我的代码给贴出来
大家看看
CString sql_count = "select count(*) from T_ADMIN where F_NAME='"+temp_uid+"'";
char *csql_count = sql_count.GetBuffer(sql_count.GetLength());
try
{
m_pRecordset.CreateInstance("ADODB.RecordSet"); m_pRecordset->CursorLocation=adUseClient;/*改成client游标,否则GetRecordCount()总是返回-1*/
m_pRecordset->Open(csql_count,_variant_t((IDispatch*)theApp.m_pConnection,TRUE),adOpenDynamic,adLockOptimistic,adCmdText);
while(!m_pRecordset->GetadoEOF())
{
n_count = m_pRecordset->GetRecordCount();
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
if(n_count>0) /*user exist*/
{ ... }
else
{ ... } /*user not exist*/
}
catch(_com_error e_count)
{
m_error.Format("查询记录数异常,错误代码%s",e_count);
AfxMessageBox(m_error);
}
把第一句改为CString sql_count = "select TOP 1 * from T_ADMIN where F_NAME='"+temp_uid+"'";
-----------------------------------------------------------------------
我用的后台数据库是oracle的,TOP 不认
"select count(*) from T_ADMIN where F_NAME='"+temp_uid+"'"; 该语句返回的记录集中,第一条记录的第一个字段保存的即为T_admin中符合条件的记录数,若该字段的值为0,即表示用户不存在。
------------------------------------------------------------
谢谢您的思路
我去书店找几本相关的书看看
回来再调,
char *csql_count = sql_count.GetBuffer(sql_count.GetLength());
int Count;
try
{
m_pRecordset.CreateInstance("ADODB.RecordSet"); m_pRecordset->CursorLocation=adUseClient;/*改成client游标,否则GetRecordCount()总是返回-1*/
m_pRecordset->Open(csql_count,_variant_t((IDispatch*)theApp.m_pConnection,TRUE),adOpenDynamic,adLockOptimistic,adCmdText);
Count=(m_pRecordset->GetCollect("Nums")).intVal;
}
catch
{
}
if(Count==0) //不存在
{
}
else//存在
{
}
-----------------------------------------
Thank you very much!