SQLConfigDataSource自动配置数据源

SQLConfigDataSource自动配置数据源

SQLConfigDataSource()的原型如下:

BOOL SQLConfigDataSource(HWND hwndParent, UINT fRequest, LPCSTR IpszDriver, LPCSTR IpszAttributes);
其中四个参数的用法如下:
●参数hwndPwent是父级窗口句柄。如果句柄为NULL,将不会显示一些有关的对话框。如果参数 IpszAttributes提供的信息不够完善,在创建过程中就会出现对话框要求用户提供相应信息。
●参数fRequest可以设置为下面的数值之一:
ODBC_ADD_DSN: 增加_个新数据源
ODBC_CONHG_DSN: 配置(修改)一个已经存在的数据源
ODBC_REMOVE_DSN: 删除一个已经存在的数据源
ODBC_ADD_SYS_DSN: 增加一个新的系统数据源
ODBC_CONFIG_SYS_DSN: 更改一个已经存在的系统数据源
ODBC_REMOVE_SYS_DSN: 删除一个已经存在的系统数据源
●参数lpszDriver是数据库引擎名称,可以参见ODBC管理器中对ODBC驱动程序的描述。比如要加载的是Excel数据库,那么数据库引擎名称就为Microsoft Excel Driver(*.xls)
●参数lpszAttributes为一连串的"KeyName=value"字符串,每两个KeyName值之间用\0""字符隔开(或者\0隔开即可)。KeyName主要是新数据源缺省的驱动程序注册说明,其中最主要的关键字是"DSN"(新数据源的名称)和"DBQ"(数据源的地址),其余关键字则根据不同的数据源有不同要求。关于lpszAttributes参数的具体设置,详细可以参考Windows系统目录下帮助文件Odbcjtn.hlp主题目录标签中的"ODBC API函数改变|SQLConfigDatasource"条目。

代码示例

<span style="white-space:pre">	</span>TCHAR strCurDrt[500];
	::GetModuleFileName(NULL,strCurDrt,500);
	CString strFileName = strCurDrt;
	strFileName.Delete(strFileName.ReverseFind('\\')+1,strFileName.GetLength()-strFileName.ReverseFind('\\')-1);
	CString tempFileName=strFileName;
	
	//设置数据源	
	CString ODBCFileName=tempFileName;
	TCHAR sz[101];
	memset(sz,0,sizeof(TCHAR)*101);
	tempFileName += "AttendMIS.ini";
	GetPrivateProfileString(_T("General"),_T("ODBC数据源名称"),_T("misdb"),sz,100,tempFileName);
	CString ODBCname(sz);
	GetPrivateProfileString(_T("General"),_T("数据库用户"),_T("dbattend"),sz,100,tempFileName);
	g_strDBUser=sz;
	GetPrivateProfileString(_T("General"),_T("数据库密码"),_T("dbattend"),sz,100,tempFileName);
	g_strDBPassword=sz;
	

	ODBCFileName += ODBCname+".mdb";
	char* szDesc = new char[256];
	sprintf(szDesc,"DSN=%s?DBQ=%s?UID=%s?PWD=%s??",ODBCname,ODBCFileName,g_strDBUser,g_strDBPassword);
	int nlen = strlen(szDesc);
	for (int i=0; i<nlen; i++)
	{
		if (szDesc[i] == '?')
				szDesc[i] = '\0';
	}


	if(!SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",
							 (LPCSTR)szDesc))
		AfxMessageBox("数据源没有动态载入");
	delete [] szDesc;
	//连接数据库
	ConnectDB();


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值