问个简单的问题:如何判断是否建立数据源 我的程序需要动态建立数据源,我想第一次运行程序后就建立数据源,以后再运行程序就不在建立数据源.因此就需要判断是否已经建立了数据源.请问如何判断呢?ps:VC+Access. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是指ODBC数据源?在注册表中读取。HKEY_CURRENT_USER\Software\ODBC\ODBC.INI 下或者HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI 下 http://blog.csdn.net/taianmonkey/archive/2004/05/22/16777.aspx 你们的意思是:通过写入注册表添加ODBC数据源 然后通过检查读取的注册表的项目是否为空判断是否建立了数据源?对吗?那么怎么读取注册表的项目来判断呢? 我想你们是不是有点误会,我的问题主要是怎么判断是否建立了数据源,动态建立数据源,好像可以这样: 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); } 只要是ODBC数据源,注册后都会写在注册表中。 MFC中的ComboBox如何设置为不可编译? DirectShow filter 的CLSID问题 请教BeautyQQ里面的类 lib的问题 求助用VC DES加密码文件的问题。想实现用方法1加密文件 后再方法2 解密文件 可成功正常运行 求教高手:在PPC中,关于添加系统功能的原理?谢谢 父进程创建一个子进程,然后父进程退出.会不会影响子进程的运行? ADO 的Delete 和Find问题 高分请大家帮我用Vc开发C/S类型的中心控制程序 encoding=??才支持汉字显示 豁出去了,最后43分 dc C++中if(对象){}的含义
在注册表中读取。
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI 下
或者
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI 下
然后通过检查读取的注册表的项目是否为空判断是否建立了数据源?对吗?
那么怎么读取注册表的项目来判断呢?
动态建立数据源,好像可以这样: 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);
}