| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 910 人关注过本帖
标题:【求助】关于用VC6连接SQL数据库中ADO访问技术getcollect和getrows的问题
只看楼主 加入收藏
静候佳音24
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-3-26
结帖率:0
收藏
 问题点数:0 回复次数:0 
【求助】关于用VC6连接SQL数据库中ADO访问技术getcollect和getrows的问题
首先,我是在用VC6来做SQL数据库的连接,所建工程均为控制台工程,用到了ADO数据访问,对于数据库中操作的表是“weather”,如下
图片附件: 游客没有浏览图片的权限,请 登录注册


程序如下:
程序代码:
#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();
}

运行结果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册


我想达到的目的也就是通过程序访问到数据库表,将表中内容一个个显示出来,或者一行行显示出来,或者一列列显示出来。我程序已经完成了数据库的连接,只是在显示的时候有些疑问,我用到的是getcollect来读取字符串,现在我想用getrows来完成对表中内容的显示,自己一时间解决不了,希望把问题写出来,请教一下论坛里面的高手达人,帮助我解决,在此谢谢大家~
搜索更多相关主题的帖子: void 技术 SQL数据库 include import 
2013-03-26 10:44
快速回复:【求助】关于用VC6连接SQL数据库中ADO访问技术getcollect和getrows的问 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051489 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved