对于一张表t(a,b,c);
在vc ado编程中,我怎样才能知道b=100的记录存不存在?
应该是类似这样一条SQL吧:select * from t exists(b = 100).请教一下两个问题?
1、这句SQL怎么写?
2、在vc ado中,执行SQL语句返回的是一个记录集(_RecordsetPtr m_pRec),怎么从m_pRec里取我判断的结果?
在vc ado编程中,我怎样才能知道b=100的记录存不存在?
应该是类似这样一条SQL吧:select * from t exists(b = 100).请教一下两个问题?
1、这句SQL怎么写?
2、在vc ado中,执行SQL语句返回的是一个记录集(_RecordsetPtr m_pRec),怎么从m_pRec里取我判断的结果?
{
vdata = pRecordset->GetCollect("列名");
if(vdata.vt != VT_NULL)
{}
{
vdata = pRecordset->GetCollect("列名");
if(vdata.vt != VT_NULL)
{ }pRecordset->MoveNext();
}
SELECT * FROM t WHERE b=100
// 获取记录个数
SELECT COUNT(*) FROM t WHERE b=100
2、在程序中判断 CString strSQL("SELECT * FROM t WHERE b=100"); // 生产 SQL 语句 pRs->Open(_variant_t(strSQL),
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText); // 打开记录集
if(!pRs->BOF) bReturn = TRUE; // 判读指针位置,不在 BOF 时,表示记录集中有记录 pRs->Close();
如果记录集中没有记录,pRs->BOF 为真,有记录为假。
sprintf(szSQL,"select * from t where b = 100");
try
{
rst=cnn->Execute(_bstr_t(szSql),&v,adCmdText);
if(!rst->GetadoEOF())
{
AfxMessageBox("存在!");
}else
{
AfxMessageBox("不存在!");
}
}
catch(_com_error &e)
{
char szTmp[512];
sprintf(szTmp,"执行SQL出错: %s",LPCTSTR(e.Description()));
AfxMessageBox(szTmp);
return;
}
程序里要想获得返回结果就得改改了。
SELECT COUNT(*) as T1 FROM t WHERE b=100 ;
执行完以后,
_variant_t v1;
int n;
要用记录集对象,
v1 = pRs->GetCollect(T1);
然后
int n = v1.intVal
n就是记录数
n>0就有,否则没有。