只有本站会员才能查看附件,请 登录
程序如下:

#include "iostream.h"
#include "stdio.h"
#include "afx.h"
#include "icrsint.h"
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace rename("EOF", "adoEOF")
void TESTHR(HRESULT x)
{if FAILED(x) _com_issue_error(x);}
void PrintError(const char *cs)
{FILE *fd;
fd=fopen("log\\ADOError.log","ab+");
fprintf(fd,"%s%c%c",cs,13,10);
fclose(fd);
}
VOID PrintProviderError(_ConnectionPtr pConnection)
{
ErrorPtr pErr = NULL;
long nCount = 0;
long i = 0;
if( (pConnection->Errors->Count) > 0)
{
nCount = pConnection->Errors->Count;
for(i = 0; i < nCount; i++)
{
pErr = pConnection->Errors->GetItem(i);
PrintError((LPCSTR)pErr->Description);
}
}
}
void AddNewX(void)
{
// Define ADO object pointers.
// Initialize pointers on define.
_RecordsetPtr pRecords = NULL;
_ConnectionPtr pConnection = NULL;
//Define Other variables
IADORecordBinding *picRs = NULL; //Interface Pointer declared.
//CEmployeeRs emprs; //C++ class object
HRESULT hr = S_OK;
_bstr_t strCnn("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=weather_normal;");
try
{
//Open a connection
strCnn=("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=weather_normal;");
TESTHR(pConnection.CreateInstance(__uuidof(Connection)));
hr = pConnection->Open(strCnn,"","",NULL);
//_RecordsetPtr pRecords;
TESTHR(pRecords.CreateInstance(__uuidof(Recordset)));
hr=pRecords->Open("select weather,feel,temperature,wind,result from tab_weather ",
_variant_t((IDispatch *) pConnection, true),adOpenKeyset,adLockOptimistic,adCmdText);
TESTHR(hr);
_bstr_t sql;
_variant_t vweather; //变量声明
CString strusername;
sql="select weather,feel,temperature,wind,result from tab_weather";
pRecords=pConnection->Execute(sql,NULL,adCmdText);
while(!pRecords->adoEOF)
{
vweather = pRecords->GetCollect("weather");///取得weather字段的值
strusername = (TCHAR*)(_bstr_t)vweather ;//转换为字符串
printf("%s\n",strusername);
pRecords->MoveNext();///移到下一条记录
}
if (picRs)
picRs->Release();
pRecords->Close();
pConnection->Close();
}
catch(_com_error &e)
{
// Notify the user of errors if any.
_variant_t vtConnect = pRecords->GetActiveConnection();
}
}
//==========================================
//==========================================
//==========================================
void main()
{
if(FAILED(::CoInitialize(NULL)))
return;
AddNewX();
::CoUninitialize();
}
#include "stdio.h"
#include "afx.h"
#include "icrsint.h"
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace rename("EOF", "adoEOF")
void TESTHR(HRESULT x)
{if FAILED(x) _com_issue_error(x);}
void PrintError(const char *cs)
{FILE *fd;
fd=fopen("log\\ADOError.log","ab+");
fprintf(fd,"%s%c%c",cs,13,10);
fclose(fd);
}
VOID PrintProviderError(_ConnectionPtr pConnection)
{
ErrorPtr pErr = NULL;
long nCount = 0;
long i = 0;
if( (pConnection->Errors->Count) > 0)
{
nCount = pConnection->Errors->Count;
for(i = 0; i < nCount; i++)
{
pErr = pConnection->Errors->GetItem(i);
PrintError((LPCSTR)pErr->Description);
}
}
}
void AddNewX(void)
{
// Define ADO object pointers.
// Initialize pointers on define.
_RecordsetPtr pRecords = NULL;
_ConnectionPtr pConnection = NULL;
//Define Other variables
IADORecordBinding *picRs = NULL; //Interface Pointer declared.
//CEmployeeRs emprs; //C++ class object
HRESULT hr = S_OK;
_bstr_t strCnn("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=weather_normal;");
try
{
//Open a connection
strCnn=("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=weather_normal;");
TESTHR(pConnection.CreateInstance(__uuidof(Connection)));
hr = pConnection->Open(strCnn,"","",NULL);
//_RecordsetPtr pRecords;
TESTHR(pRecords.CreateInstance(__uuidof(Recordset)));
hr=pRecords->Open("select weather,feel,temperature,wind,result from tab_weather ",
_variant_t((IDispatch *) pConnection, true),adOpenKeyset,adLockOptimistic,adCmdText);
TESTHR(hr);
_bstr_t sql;
_variant_t vweather; //变量声明
CString strusername;
sql="select weather,feel,temperature,wind,result from tab_weather";
pRecords=pConnection->Execute(sql,NULL,adCmdText);
while(!pRecords->adoEOF)
{
vweather = pRecords->GetCollect("weather");///取得weather字段的值
strusername = (TCHAR*)(_bstr_t)vweather ;//转换为字符串
printf("%s\n",strusername);
pRecords->MoveNext();///移到下一条记录
}
if (picRs)
picRs->Release();
pRecords->Close();
pConnection->Close();
}
catch(_com_error &e)
{
// Notify the user of errors if any.
_variant_t vtConnect = pRecords->GetActiveConnection();
}
}
//==========================================
//==========================================
//==========================================
void main()
{
if(FAILED(::CoInitialize(NULL)))
return;
AddNewX();
::CoUninitialize();
}
运行结果如下:
只有本站会员才能查看附件,请 登录
我想达到的目的也就是通过程序访问到数据库表,将表中内容一个个显示出来,或者一行行显示出来,或者一列列显示出来。我程序已经完成了数据库的连接,只是在显示的时候有些疑问,我用到的是getcollect来读取字符串,现在我想用getrows来完成对表中内容的显示,自己一时间解决不了,希望把问题写出来,请教一下论坛里面的高手达人,帮助我解决,在此谢谢大家~