我需要在一个只支持C语言的平台上实现与数据库的通信。可我只会MFC向导做一个简单的这样的程序。于是,我VC下作简单的实验,但都没有成功。我的问题是:1、用win32 console application 初始化的程序是否能调用ADO来实现连接数据库呢。
2、如果能,那么应该#include 哪些头文件,我写的时候,总是提示 _windows_ 重复。
   如果不能,我还有些什么其它的办法。

解决方案 »

  1.   

    当时你就该选上MFC和ATL的支持。
      

  2.   

    一个只支持C语言的平台上实现与数据库的通信
    -----------------------------------------你可以用ODBC API来操作数据库http://www.vchelp.net/wyy/tour/odbc_api.asp
      

  3.   

    伯虎兄,我以前都是用ADO,没有用过ODBC。ADO是不是不好用啊。
      

  4.   

    我觉的ODBC比ADO方便多了,不过。目前的项目用的也是ADO,感觉有点麻烦,没ODBC简单
      

  5.   

    当然可以,以下是一个console的例子,在命令行下就可以编译通过(cl /MT test.cpp)
    #include <afxwin.h>
    #import "e:\program files\common files\system\ado\msado26.tlb" no_namespace rename("EOF","adoEOF")main()
    {
       OleInitialize(NULL);    _ConnectionPtr m_pConnection;
        HRESULT hr;
        hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
        if(SUCCEEDED(hr))
            hr = m_pConnection->Open("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=vpc98","","",adModeUnknown);
            _variant_t RecordsAffected;
           m_pConnection->Execute("INSERT INTO users(ID,username,old,birthday) VALUES (1, 'Washington',25,'01/01/2001')",&RecordsAffected,adCmdText);
           m_pConnection->Execute("UPDATE users SET old = old+1",&RecordsAffected,adCmdText);
           _RecordsetPtr m_pRecordset =  m_pConnection->Execute("SELECT COUNT(*) FROM users",&RecordsAffected,adCmdText);
          _variant_t vIndex = (long)0;
      
      _variant_t vCount = m_pRecordset->GetCollect(vIndex);///取得第一个字段的值放入vCount变量
      m_pRecordset->Close();///关闭记录集
      
      CString message;
      
      message.Format("共有%d条记录",vCount.lVal);
      AfxMessageBox(message);///显示当前记录条数
    }