问在VC中,我用ADO连数据库,怎样取某个表中某条记录(“多个字段的值”)呀 请问在VC中,我用ADO连数据库,怎样取某个表中某条记录(“多个字段的值”)呀 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MySet.CreateInstance(__uuidof(Recordset));...MySet->GetCollect("FIELD_1") http://www.vckbase.com/document/viewdoc.asp?id=215 sql语句会不会,如果使用ID取得某条记录的话请看"select * form tablename where id = youid"然后使用BOOL CCDData::SQLExe(char* sql){ COleVariant vNull,vValue; vNull.vt=VT_ERROR; vNull.scode=DISP_E_PARAMNOTFOUND; m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->putref_ActiveConnection(m_piConnection); m_pRecordset->Open(sql,vNull,adOpenKeyset,adLockOptimistic,adCmdUnknown); m_lFld=m_pRecordset->Fields->GetCount(); m_lNumRecord=m_pRecordset->RecordCount; if(!m_pRecordset->EndOfFile) m_pRecordset->MoveFirst(); return TRUE;} MSDN中的ADO C++ extensions:#define INITGUID#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")#include <stdio.h>#include "icrsint.h"void dump_com_error(_com_error &e) {printf("Error\n");printf("\a\tCode = %08lx\n", e.Error());printf("\a\tCode meaning = %s", e.ErrorMessage());_bstr_t bstrSource(e.Source());_bstr_t bstrDescription(e.Description());printf("\a\tSource = %s\n", (LPCSTR) bstrSource);printf("\a\tDescription = %s\n", (LPCSTR) bstrDescription); }class CCustomRs : public CADORecordBinding{BEGIN_ADO_BINDING(CCustomRs) ADO_VARIABLE_LENGTH_BINDING_ENTRY(1, adVarChar, m_szau_lname, sizeof(m_szau_lname), lau_lnameStatus, FALSE) ADO_VARIABLE_LENGTH_BINDING_ENTRY(2, adVarChar, m_szau_fname, sizeof(m_szau_fname), lau_fnameStatus, TRUE)END_ADO_BINDING()public: CHAR m_szau_lname[41]; ULONG lau_lnameStatus; CHAR m_szau_fname[41]; ULONG lau_fnameStatus;};VOID main() { HRESULT hr; IADORecordBinding *picRs = NULL; ::CoInitialize(NULL); try { _RecordsetPtr pRs.CreateInstance(__uuidof(Recordset)); CCustomRs rs; pRs->Open("select FirstName, LastName, Age from Employees", "dsn=pubs;uid=sa;pwd=;", adOpenStatic, adLockOptimistic, adCmdUnknown); if (FAILED(hr = pRs->QueryInterface(__uuidof(IADORecordBinding), (LPVOID*)&picRs))) _com_issue_error(hr); if (FAILED(hr = picRs->BindToRecordset(&rs))) _com_issue_error(hr); while (VARIANT_FALSE == pRs->EndOfFile) { // 处理 CCustomRs C++ 实例变量中的数据。 printf("\a\tName = %s \t%s", (lau_fnameStatus == adFldOK ? m_szau_fname : "<NULL>"), (lau_lnameStatus == adFldOK ? m_szau_lname): "<NULL>")); // 更改 Recordset 的当前行。 // 新当前行的 Recordset 数据将被 // 自动取出并防止在 CCustomRs C++ 实例变量中 pRs->MoveNext(); } } catch (_com_error &e) { dump_com_error(e); } if (picRs) picRs->Release(); CoUninitialize(); }; C++里怎么对IE的新网页弹出事件监听,有C的代码,没C++的,有时间的大牛帮忙看看 请教用GetGlyphOutline获取字体点阵后绘制圆滑字体算法。 谁能给推荐一个好用的性能测试工具? 本人有点菜 还是关于CTime类的 大家好 问个问题 初学Vc,遇到问题,保证正确答者必有分! 一个对话框继承的问题,大家请进 请教关于vc++的一个很简单的问题!! 急,如何在XP下安装visual c++6.0中文版! 到底MFC的功能有多少 如何使用动画图标 请问如何在VC6.0中实现微积分计算? 急!
...
MySet->GetCollect("FIELD_1")
"select * form tablename where id = youid"
然后使用
BOOL CCDData::SQLExe(char* sql)
{ COleVariant vNull,vValue;
vNull.vt=VT_ERROR;
vNull.scode=DISP_E_PARAMNOTFOUND;
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->putref_ActiveConnection(m_piConnection);
m_pRecordset->Open(sql,vNull,adOpenKeyset,adLockOptimistic,adCmdUnknown);
m_lFld=m_pRecordset->Fields->GetCount();
m_lNumRecord=m_pRecordset->RecordCount;
if(!m_pRecordset->EndOfFile)
m_pRecordset->MoveFirst();
return TRUE;
}
#import "c:\Program Files\Common Files\System\ADO\msado15.dll"
no_namespace rename("EOF", "EndOfFile")
#include <stdio.h>
#include "icrsint.h"void dump_com_error(_com_error &e)
{
printf("Error\n");
printf("\a\tCode = %08lx\n", e.Error());
printf("\a\tCode meaning = %s", e.ErrorMessage());
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
printf("\a\tSource = %s\n", (LPCSTR) bstrSource);
printf("\a\tDescription = %s\n", (LPCSTR) bstrDescription);
}class CCustomRs :
public CADORecordBinding
{
BEGIN_ADO_BINDING(CCustomRs)
ADO_VARIABLE_LENGTH_BINDING_ENTRY(1, adVarChar, m_szau_lname,
sizeof(m_szau_lname), lau_lnameStatus, FALSE)
ADO_VARIABLE_LENGTH_BINDING_ENTRY(2, adVarChar, m_szau_fname,
sizeof(m_szau_fname), lau_fnameStatus, TRUE)
END_ADO_BINDING()public:
CHAR m_szau_lname[41];
ULONG lau_lnameStatus;
CHAR m_szau_fname[41];
ULONG lau_fnameStatus;
};VOID main()
{
HRESULT hr;
IADORecordBinding *picRs = NULL;
::CoInitialize(NULL); try
{
_RecordsetPtr pRs.CreateInstance(__uuidof(Recordset)); CCustomRs rs;
pRs->Open("select FirstName, LastName, Age from Employees",
"dsn=pubs;uid=sa;pwd=;",
adOpenStatic, adLockOptimistic, adCmdUnknown);
if (FAILED(hr = pRs->QueryInterface(__uuidof(IADORecordBinding),
(LPVOID*)&picRs)))
_com_issue_error(hr);
if (FAILED(hr = picRs->BindToRecordset(&rs)))
_com_issue_error(hr); while (VARIANT_FALSE == pRs->EndOfFile)
{
// 处理 CCustomRs C++ 实例变量中的数据。 printf("\a\tName = %s \t%s",
(lau_fnameStatus == adFldOK ? m_szau_fname : "<NULL>"),
(lau_lnameStatus == adFldOK ? m_szau_lname): "<NULL>")); // 更改 Recordset 的当前行。
// 新当前行的 Recordset 数据将被
// 自动取出并防止在 CCustomRs C++ 实例变量中
pRs->MoveNext();
}
}
catch (_com_error &e)
{
dump_com_error(e);
} if (picRs)
picRs->Release(); CoUninitialize();
};