请问如何找到关键字的记录?? 用ado链接,有两个字段id和name.现在我知道一个name的值,怎样找到其所在的记录,及其id,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 _bstr_t bstr;_variant_t theValue;CString str;int id;str = _T("select id from table where name = yourvalue");bstr = str;try{ pRecordset.CreateInstance(__uuidof(Recordset)); pRecordset->Open( bstr, pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); while( !pRecordset->adoEOF ) { theValue = pRecordset->GetCollect(_T("id")); if(TheValue.vt!=VT_NULL) id = atoi( (char*)_bstr_t(theValue) ); }}catch(_com_error &e){ //...}catch(...){ //...} 就是这样使用SQL语句定位就行了 谢谢HanKuu大哥的指点!!顺便再问一下:pRecordset.CreateInstance(__uuidof(Recordset));和pRecordset.CreateInstance("ADODB.Recordset");这两个句子有什么不同?? /**************************************************************响应"证卡管理"->"撤户办理(&X)"历史纪录:历史纪录:andy-24/5/2002***************************************************************/void CMyView::OnCardRelease() { m_strTableName=_T("用户信息");//设置当前操作的数据库表名称 //监测dao数据库对象的有效性,并在纪录集对象打开时关闭该记录集 if(!m_pDatabase->IsOpen()) return; if(!m_pRecordset) return; if(m_pRecordset->IsOpen()) m_pRecordset->Close(); ///////////////////////////////////////////////////////// CCarddeleteuser dlg; if(dlg.DoModal()!=IDOK) return; CString userid=dlg.m_userid; //AfxMessageBox(userid); CString strSql,str; ////////////////////////////////////////////////////////// //判断是否是合法用户 strSql.Format("select * from 用户信息"); m_pRecordset->Open(dbOpenDynaset,strSql); str.Format("读者号='%s'",userid); if(!m_pRecordset->FindFirst(str)) { str.Format("该用户未注册或输入错误,请确认输入!"); AfxMessageBox(str); return; } m_pRecordset->Close(); //判断是否借有书 strSql.Format("select * from %s where 读者号='%s'",m_strTableName,userid); m_pRecordset->Open(dbOpenDynaset,strSql); str.Format("借阅书目个数>0"); if(m_pRecordset->FindFirst(str)) { AfxMessageBox("该用户还借有图书,不能注销!"); return; } else { strSql.Format("delete from %s where 读者号='%s'",m_strTableName,userid); } try { if(m_pDatabase->CanUpdate()) m_pDatabase->Execute(strSql); } catch(CDaoException *e) { e->ReportError(); e->Delete(); return; } OnZhbbUserall();} 类似上面的用法,调用sql语句即可。具体参见希望出版的<vc数据库高级编程〉 我们在创建ADO COM对象实例时,假如有多个ADO版本,这时需要指定针对哪个版本创建实例,如果用pRecordset.CreateInstance(__uuidof(Recordset));创建,这时创建的实例是根据头文件里定义的GUID来指定版本,如果用pRecordset.CreateInstance("ADODB.Recordset");则我们人为地指定创建的版本,“ADODB.Recordset”就是版本描述符你可以参看一下注册表KEY_CLASSES_ROOT下的CLSID 和 CurVer MFC下如何输出BYTE二维数组? vector删除多个元素的问题 ctreectrl InsertItem()初级问题 请教关于CreateDIBSection的用法 请问:如何固定VIEW中的属性页不能拖动。 关于Vfw的函数ICDecompress()问题 @@@@@现在想考研,不知道靠什么专业,郁闷?@@@@@ picture控件是不是没有双击消息? VC高手们快救愚弟:怎样才能让我的程序执行点击另外一个程序的窗口的按钮的操作!!! 有谁知道dbgrid控件的使用方法吗?绑定和不绑定 ADO 的初始化 COM+高手请帮我,给高分!!!!!!
_variant_t theValue;
CString str;
int id;
str = _T("select id from table where name = yourvalue");
bstr = str;
try
{
pRecordset.CreateInstance(__uuidof(Recordset));
pRecordset->Open( bstr,
pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
while( !pRecordset->adoEOF )
{
theValue = pRecordset->GetCollect(_T("id"));
if(TheValue.vt!=VT_NULL)
id = atoi( (char*)_bstr_t(theValue) );
}
}
catch(_com_error &e)
{
//...
}
catch(...)
{
//...
}
使用SQL语句定位就行了
pRecordset.CreateInstance(__uuidof(Recordset));和
pRecordset.CreateInstance("ADODB.Recordset");这两个句子有什么不同??
响应"证卡管理"->"撤户办理(&X)"
历史纪录:历史纪录:andy-24/5/2002
***************************************************************/
void CMyView::OnCardRelease()
{
m_strTableName=_T("用户信息");//设置当前操作的数据库表名称
//监测dao数据库对象的有效性,并在纪录集对象打开时关闭该记录集
if(!m_pDatabase->IsOpen())
return;
if(!m_pRecordset)
return;
if(m_pRecordset->IsOpen())
m_pRecordset->Close();
/////////////////////////////////////////////////////////
CCarddeleteuser dlg;
if(dlg.DoModal()!=IDOK)
return;
CString userid=dlg.m_userid;
//AfxMessageBox(userid);
CString strSql,str;
//////////////////////////////////////////////////////////
//判断是否是合法用户
strSql.Format("select * from 用户信息");
m_pRecordset->Open(dbOpenDynaset,strSql);
str.Format("读者号='%s'",userid);
if(!m_pRecordset->FindFirst(str))
{
str.Format("该用户未注册或输入错误,请确认输入!");
AfxMessageBox(str);
return;
}
m_pRecordset->Close();
//判断是否借有书
strSql.Format("select * from %s where 读者号='%s'",m_strTableName,userid);
m_pRecordset->Open(dbOpenDynaset,strSql);
str.Format("借阅书目个数>0");
if(m_pRecordset->FindFirst(str))
{
AfxMessageBox("该用户还借有图书,不能注销!");
return;
}
else
{
strSql.Format("delete from %s where 读者号='%s'",m_strTableName,userid);
}
try
{
if(m_pDatabase->CanUpdate())
m_pDatabase->Execute(strSql);
}
catch(CDaoException *e)
{
e->ReportError();
e->Delete();
return;
}
OnZhbbUserall();}
具体参见希望出版的<vc数据库高级编程〉
创建,这时创建的实例是根据头文件里定义的GUID来指定版本,如果用pRecordset.CreateInstance("ADODB.Recordset");则我们人为地指定创建的版本,“ADODB.Recordset”就是版本描述符
你可以参看一下注册表KEY_CLASSES_ROOT下的CLSID 和 CurVer