在VC中用ADO访问数据库 1223 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include "stdio.h"#import "msado15.dll" no_namespace rename("EOF", "EndOfFile")int main(int argc, char* argv[]){ printf("Use ADO to open ..\\addrbook.mdb database file!\n"); CoInitialize(NULL); try { _ConnectionPtr pConn("ADODB.Connection"); _RecordsetPtr pRst("ADODB.Recordset"); pConn->Open("PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=..\\addrbook.mdb;UID=;PWD=;" ,"","",adConnectUnspecified);//此处的RecordsAffected= -1,因为只有执行updates, deletes, or inserts rows才能用 //该指令读取受影响的行 pRst = pConn->Execute(_bstr_t("select * from 家庭成员"), RecordsAffected, adCmdText); FieldsPtr fds1=pRst->GetFields(); printf("printf field name of the table\n"); for(int i = 0;i < fds1->GetCount(); i++) { FieldPtr fd = fds1->GetItem(_variant_t(short(i))); printf("%s ",(LPCTSTR)fd->GetName()); } printf("\n"); pRst->Open("家庭成员", _variant_t((IDispatch *) pConn, true), adOpenStatic, adLockPessimistic, adCmdTable); FieldsPtr fds=pRst->GetFields(); printf("printf field name of the table\n"); for(int i = 0;i < fds->GetCount(); i++) { FieldPtr fd = fds->GetItem(_variant_t(short(i))); printf("%s ",(LPCTSTR)fd->GetName()); } printf("\n"); pRst->MoveFirst (); for(i = 0;i < pRst->GetRecordCount() ; i++) { printf("Record is '%s %s %s'\n", (char*) ((_bstr_t) pRst->GetFields()->GetItem("姓氏")->GetValue()), (char*) ((_bstr_t) pRst->Fields->Item["名字"]->Value), (char*) ((_bstr_t) pRst->Fields->Item["角色"]->Value)); pRst->MoveNext (); } pRst->Close(); pConn->Close(); } catch (_com_error &e) { printf("Description = '%s' ,%d,'%s'\n", (char*) e.Description(),e.WCode,e.ErrorMessage()); } ::CoUninitialize(); return 0;} 是要例子麽? HRESULT hr; TCHAR pBuffer[1024]; _ConnectionPtr Conn; _RecordsetPtr pRecordset; _variant_t value; try { hr = Conn.CreateInstance(__uuidof(Connection)); if(SUCCEEDED(hr)) { sprintf(pBuffer,"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Pubs;Data Source=(Local)"); hr = Conn->Open(pBuffer,"","",-1); if(SUCCEEDED(hr)) { hr = pRecordset.CreateInstance(__uuidof(Recordset)); if(SUCCEEDED(hr)) { sprintf(pBuffer,"SELECT * FROM TITLES ORDER BY pub_id"); hr = pRecordset->Open(_variant_t(pBuffer),Conn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText); if(SUCCEEDED(hr)) { if(pRecordset->adoEOF) MessageBox("adoEOF"); int i = 0; while((!pRecordset->adoEOF)) { for(int j = 0;j<pRecordset->Fields->GetCount();j++) { _variant_t vIndex((long)j); value = pRecordset->GetCollect(vIndex); if(CrackStrVariant(value,pBuffer,1024)) if( j==0 ) m_ListCtl.InsertItem(i,pBuffer,0); else m_ListCtl.SetItemText(i,j,pBuffer); } i++; hr = pRecordset->MoveNext(); if(SUCCEEDED(hr)); else { pRecordset->Close(); return; } } pRecordset->Close(); } else { pRecordset->Close(); return; } } else { return; } } else { return; } } else { return; } }catch(...) { MessageBox("Error Occur:Can Not Determin"); return; } Conn->Close(); 在msdn的VC的ado的例子有很多! 谁能给我一个Oracle的例子?我都连不上,快疯了,,, "Provider=MSDAORA;Data Source=serverName;User ID=userName; Password=userPassword;" _RecordsetPtr pRst("ADODB.Recordset"); pConn->Open("PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=..\\addrbook.mdb;UID=;PWD=;" ,"","",adConnectUnspecified);pRst.Find("ID=1 and age=25");//何处有错?msdn说Find的参数的不包含where的where子句。"ID=1 and age=25"难道不符合where子句的格式?对不起!我刚学. 中文操作系统下操作数据库正常,在西班牙语操作系统下就出现错误,如何解决? VC/MFC非技术区的废柴男们进来瞧瞧 急!!!高程报考最后一天了,我不打算报了征求一下大家意见 如何实现两个目录下所有内容的比较? 请问菜鸟问题!! 求救!希望各位高手指点下,一定给分! 请问我要从一个EXCEL表格里把数据读出到LISTCTRL控件里显示出来,应该怎么做 软件框架选择问题 请问为何我做的弹出菜单运行时只显示一小竖条,用鼠标点击后再显示菜单? richedit控件在win10下获得焦点的时候会假死10几秒? 关于界面使用表格的问题,在线等候 VC6.0英文版下载哪位大侠能告诉我地址???
#import "msado15.dll" no_namespace rename("EOF", "EndOfFile")
int main(int argc, char* argv[])
{
printf("Use ADO to open ..\\addrbook.mdb database file!\n");
CoInitialize(NULL);
try
{
_ConnectionPtr pConn("ADODB.Connection");
_RecordsetPtr pRst("ADODB.Recordset");
pConn->Open("PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=..\\addrbook.mdb;UID=;PWD=;"
,"","",adConnectUnspecified);//此处的RecordsAffected= -1,因为只有执行updates, deletes, or inserts rows才能用
//该指令读取受影响的行
pRst = pConn->Execute(_bstr_t("select * from 家庭成员"), RecordsAffected, adCmdText);
FieldsPtr fds1=pRst->GetFields();
printf("printf field name of the table\n");
for(int i = 0;i < fds1->GetCount(); i++)
{
FieldPtr fd = fds1->GetItem(_variant_t(short(i)));
printf("%s ",(LPCTSTR)fd->GetName()); }
printf("\n");
pRst->Open("家庭成员", _variant_t((IDispatch *) pConn, true),
adOpenStatic, adLockPessimistic, adCmdTable);
FieldsPtr fds=pRst->GetFields();
printf("printf field name of the table\n");
for(int i = 0;i < fds->GetCount(); i++)
{
FieldPtr fd = fds->GetItem(_variant_t(short(i)));
printf("%s ",(LPCTSTR)fd->GetName()); }
printf("\n");
pRst->MoveFirst ();
for(i = 0;i < pRst->GetRecordCount() ; i++)
{
printf("Record is '%s %s %s'\n",
(char*) ((_bstr_t) pRst->GetFields()->GetItem("姓氏")->GetValue()),
(char*) ((_bstr_t) pRst->Fields->Item["名字"]->Value),
(char*) ((_bstr_t) pRst->Fields->Item["角色"]->Value));
pRst->MoveNext ();
}
pRst->Close();
pConn->Close();
}
catch (_com_error &e)
{
printf("Description = '%s' ,%d,'%s'\n", (char*) e.Description(),e.WCode,e.ErrorMessage());
}
::CoUninitialize();
return 0;
}
HRESULT hr;
TCHAR pBuffer[1024];
_ConnectionPtr Conn;
_RecordsetPtr pRecordset;
_variant_t value;
try
{
hr = Conn.CreateInstance(__uuidof(Connection));
if(SUCCEEDED(hr))
{
sprintf(pBuffer,"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Pubs;Data Source=(Local)");
hr = Conn->Open(pBuffer,"","",-1);
if(SUCCEEDED(hr))
{
hr = pRecordset.CreateInstance(__uuidof(Recordset));
if(SUCCEEDED(hr))
{
sprintf(pBuffer,"SELECT * FROM TITLES ORDER BY pub_id");
hr = pRecordset->Open(_variant_t(pBuffer),Conn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
if(SUCCEEDED(hr))
{
if(pRecordset->adoEOF)
MessageBox("adoEOF");
int i = 0;
while((!pRecordset->adoEOF))
{
for(int j = 0;j<pRecordset->Fields->GetCount();j++)
{
_variant_t vIndex((long)j);
value = pRecordset->GetCollect(vIndex);
if(CrackStrVariant(value,pBuffer,1024))
if( j==0 )
m_ListCtl.InsertItem(i,pBuffer,0);
else
m_ListCtl.SetItemText(i,j,pBuffer);
}
i++;
hr = pRecordset->MoveNext();
if(SUCCEEDED(hr));
else
{
pRecordset->Close();
return;
}
}
pRecordset->Close();
}
else
{
pRecordset->Close();
return;
}
}
else
{
return;
}
}
else
{
return;
}
}
else
{
return;
}
}catch(...)
{
MessageBox("Error Occur:Can Not Determin");
return;
}
Conn->Close();
pConn->Open("PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=..\\addrbook.mdb;UID=;PWD=;"
,"","",adConnectUnspecified);pRst.Find("ID=1 and age=25");//何处有错?msdn说Find的参数的不包含where的where子句。
"ID=1 and age=25"难道不符合where子句的格式?
对不起!我刚学.