如何用vc + ado 取sql server 数据库中某个表的所有字段?请个们大侠指点 如何用vc + ado 取sql server 数据库中某个表的所有字段?请个们大侠指点 最好有原码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 知道表名:#include <conio.h>#define PAUSE printf("\npress any key to exit"); getch();#define _WIN32_DCOM#pragma warning(push)#pragma warning(disable:4146)#import "e:\program files\common files\system\ado\MSADO15.DLL" no_namespace rename("EOF", "EndOfFile")#pragma warning(pop)int main(int argc, char* argv[]){ _ConnectionPtr m_pConn; _RecordsetPtr m_pRs; CoInitializeEx(NULL, COINIT_MULTITHREADED); _bstr_t bstrConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;" "Data Source=F:\\lylong\\db1.mdb;Persist Security Info=False"; try{ m_pConn.CreateInstance( __uuidof(Connection) ); m_pRs.CreateInstance( __uuidof(Recordset) ); m_pConn->Open( bstrConnStr, "", "", adConnectUnspecified ); m_pRs->Open( "table1", m_pConn.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable); long lColumn = m_pRs->Fields->Count; printf("%-12s%-10s%-10s\n", "字段名", "长度", "类型"); for( long i=0; i<lColumn; i++ ) { printf("%-12s%-10d%-10d\n", (char*)m_pRs->Fields->Item[i]->Name, m_pRs->Fields->Item[i]->DefinedSize, m_pRs->Fields->Item[i]->Type); } m_pRs->Close(); m_pConn->Close(); }catch( _com_error e ) { printf( "\n%s Error: %ld\r\n" "%s\r\n" "%s\r\n", (char*)e.Source(), e.Error(), (char*)e.Description(), (char*)e.ErrorMessage() ); m_pRs->Close(); m_pConn->Close(); } CoUninitialize(); PAUSE; return 0;}--------------------------------_RecordsetPtr m_pRs;_variant_t vFieldName;for(int I=0; I<m_pRecordset->Fields->Count; I++){ vFieldName=m_pRecordset->Fields->GetItem((long)intI)->Name; CString str=vFieldName.bstrVal;}-------------------------------------int iCols=m_pRecordset->Fields->GetCount();_variant_t vardata;vardata.vt=VT_I4;vardata.iVal=iCols;for(vardata.iVal=0;vardata.iVal<iCols;vardata.iVal++){_bstr_t bstrCols=m_pRecordset->Fields->GetItem(vardata.iVal)->GetName();MessageBox(bstrCols);}-------------------------_bstr_t mStrSQL;CString strColName;BSTR bstrColName;long ColCount,i; Field * field = NULL; HRESULT hr;Fields * fields = NULL;LPCTSTR nameField; //打开记录集,得到字段名,并将字段名信息添加到ListBox中mStrSQL = "SELECT * FROM Images";m_pRecordset->Open(mStrSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); hr = m_pRecordset->get_Fields (&fields); //得到记录集的字段集和 if(SUCCEEDED(hr)) fields->get_Count(&ColCount); //得到记录集的字段集合中的字段的总个数 for(i=0;i<ColCount;i++) { fields->Item[i]->get_Name(&bstrColName); //得到记录集//中的字段名 strColName=bstrColName; nameField = strColName; m_FieldsList.AddString(nameField);} if(SUCCEEDED(hr)) fields->Release();//释放指针 求一个用MFC的tree control 控件做的并且能响应相应功能的源代码 程序调试 多线程排序时遇到的问题 非常熟悉MFC的高手进来看看 我想告诉大家,我为什么现在还坚持专研C++的理由! 请教,如何获得当前默认打印机的设置信息?在线等待~~ 请教银江接口调用 richedit如何给特定字加字体? 【急】mfc button被点击再点击别的地方,可以捕获到么? 怎么样改变最大化最小化等系统按钮的形状颜色和系统菜单的样式? COM组件中如何添加一个Dialog呢?我一添加编译就报错! GetItemText问题,解决问题就给分!!
#include <conio.h>
#define PAUSE printf("\npress any key to exit"); getch();#define _WIN32_DCOM#pragma warning(push)
#pragma warning(disable:4146)
#import "e:\program files\common files\system\ado\MSADO15.DLL" no_namespace rename("EOF", "EndOfFile")
#pragma warning(pop)int main(int argc, char* argv[])
{
_ConnectionPtr m_pConn;
_RecordsetPtr m_pRs;
CoInitializeEx(NULL, COINIT_MULTITHREADED);
_bstr_t bstrConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=F:\\lylong\\db1.mdb;Persist Security Info=False";
try{
m_pConn.CreateInstance( __uuidof(Connection) );
m_pRs.CreateInstance( __uuidof(Recordset) );
m_pConn->Open( bstrConnStr, "", "", adConnectUnspecified );
m_pRs->Open( "table1",
m_pConn.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable); long lColumn = m_pRs->Fields->Count;
printf("%-12s%-10s%-10s\n", "字段名", "长度", "类型");
for( long i=0; i<lColumn; i++ )
{
printf("%-12s%-10d%-10d\n", (char*)m_pRs->Fields->Item[i]->Name,
m_pRs->Fields->Item[i]->DefinedSize,
m_pRs->Fields->Item[i]->Type);
}
m_pRs->Close();
m_pConn->Close();
}catch( _com_error e )
{
printf( "\n%s Error: %ld\r\n"
"%s\r\n"
"%s\r\n",
(char*)e.Source(),
e.Error(),
(char*)e.Description(),
(char*)e.ErrorMessage() );
m_pRs->Close();
m_pConn->Close();
}
CoUninitialize();
PAUSE;
return 0;
}
--------------------------------
_RecordsetPtr m_pRs;
_variant_t vFieldName;
for(int I=0; I<m_pRecordset->Fields->Count; I++)
{
vFieldName=m_pRecordset->Fields->GetItem((long)intI)->Name;
CString str=vFieldName.bstrVal;
}
-------------------------------------
int iCols=m_pRecordset->Fields->GetCount();
_variant_t vardata;
vardata.vt=VT_I4;
vardata.iVal=iCols;
for(vardata.iVal=0;vardata.iVal<iCols;vardata.iVal++)
{
_bstr_t bstrCols=m_pRecordset->Fields->GetItem(vardata.iVal)->GetName();
MessageBox(bstrCols);
}
-------------------------
_bstr_t mStrSQL;
CString strColName;
BSTR bstrColName;
long ColCount,i;
Field * field = NULL;
HRESULT hr;
Fields * fields = NULL;
LPCTSTR nameField;
//打开记录集,得到字段名,并将字段名信息添加到ListBox中mStrSQL = "SELECT * FROM Images";m_pRecordset->Open(mStrSQL,
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
hr = m_pRecordset->get_Fields (&fields); //得到记录集的字段集和
if(SUCCEEDED(hr))
fields->get_Count(&ColCount); //得到记录集的字段集合中的字段的总个数 for(i=0;i<ColCount;i++)
{
fields->Item[i]->get_Name(&bstrColName); //得到记录集//中的字段名
strColName=bstrColName;
nameField = strColName;
m_FieldsList.AddString(nameField);
} if(SUCCEEDED(hr))
fields->Release();//释放指针