我的程序需要动态建立数据源,
我想第一次运行程序后就建立数据源,以后再运行程序就不在建立数据源.
因此就需要判断是否已经建立了数据源.
请问如何判断呢?ps:VC+Access.

解决方案 »

  1.   

    你是指ODBC数据源?
    在注册表中读取。
    HKEY_CURRENT_USER\Software\ODBC\ODBC.INI 下
    或者
    HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI 下
      

  2.   

    http://blog.csdn.net/taianmonkey/archive/2004/05/22/16777.aspx
      

  3.   

    你们的意思是:通过写入注册表添加ODBC数据源 
    然后通过检查读取的注册表的项目是否为空判断是否建立了数据源?对吗?
    那么怎么读取注册表的项目来判断呢?
      

  4.   

    我想你们是不是有点误会,我的问题主要是怎么判断是否建立了数据源,
    动态建立数据源,好像可以这样: char szDriver[]="Microsoft Access Driver (*.mdb)";
    char* pszDesc=NULL;
    UCHAR szDSN[]="TestDB";
    char szDir[]="D:\\Database";
    char szDBQ[]="D:\\Database\\test.mdb";
    pszDesc=new char[256];
    RETCODE retCode;
    SQLCHAR *pSqlState=NULL;
    SQLCHAR szMessage[64]={0};
    SQLINTEGER *plErr=NULL; int nlen;
    sprintf(pszDesc,"DSN=%s& DESCRIPTION=TOC support source&"
      "DBQ=%s& FIL=MicrosoftAccess& DRIVER=%s&"
    "DEFAULTDIR=%s&&",szDSN,szDBQ,szDriver,szDir);
    nlen = strlen(pszDesc);
    for (int i=0; i<nlen; i++)
    {
    if (pszDesc[i] == '&')
    pszDesc[i] = '\0';
      }
    if(!SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,szDriver,pszDesc))
    {
    WORD *pLen=NULL; char szErrMsg[64]={0};
    DWORD *pfErrorCode=NULL;
    SQLInstallerError(1,pfErrorCode,szErrMsg,64,pLen);
    printf("Config data source failed with error:%s.\n",
    szErrMsg);
    }
      

  5.   

    只要是ODBC数据源,注册后都会写在注册表中。