请问怎么构建一个动态dsn?最好示例一下( 请问怎么构建一个动态dsn?最好示例一下( 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //增加odbc数据源void CDemo1App::SetODBCSource(){ CString strAccessPath = m_strExePath + "test.mdb"; int iLen = strAccessPath.GetLength(); char cpConfig[MAX_PATH]; strcpy(cpConfig, "DSN=daliu\0"); strcpy(cpConfig + 10, "DBQ="); strcpy(cpConfig + 14, strAccessPath); strcpy(cpConfig + 14 + iLen, "\0"); strcpy(cpConfig + 15 + iLen, "DEFAULTDIR="); strcpy(cpConfig + 15 + iLen + 11, m_strExePath); strcpy(cpConfig + 25 + iLen + m_strExePath.GetLength(), "\0\0"); if(!SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"Microsoft Access Driver (*.mdb)\0",cpConfig)) { //AfxMessageBox("add odbc source failed!"); } } 补充:其实m_strExePath是打开文件对话框返回的文件路径名而且楼上的好像只能配置Microsoft Access Driver (*.mdb)其实你要先把数据提供程序驱动枚举出来,再根据需要选择适合自己的。 如何注册foxpro数据库呢?格式上有什么区别? 能否帮我看看下面的问题,或许对楼主有用,同时也解决了我的问题,而且在VC和CB的数据库部分还可以额外加分:为什么下面的SQLConfigDataSource总是返回false,123的数据源已经在我机器里存在,而且连接正常。 bool ( __stdcall *SQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR) = NULL; HINSTANCE hODBCDll = LoadLibrary("odbccp32.dll"); if (!hODBCDll) { AfxMessageBox("动态库加载失败!"); return ; } (FARPROC &) SQLConfigDataSource = GetProcAddress (hODBCDll, "SQLConfigDataSource"); if (!SQLConfigDataSource) { FreeLibrary(hODBCDll); return ; } //添加数据源 BOOL lreturn = SQLConfigDataSource(NULL, 1,//配置数据源 "SQL Server",//数据库驱动 "DSN = 123\0"//数据源名称 "Server = MyServer\0"//数据库服务器名称或者IP地址 "Database = master\0");//数据库名称 VC下怎样安装 DirectUI GUI , 在CDib类中如何使用以下函数?? STREAM_TIME是怎样的?为什么我在msdn中找不到它实现的.怎样将它转换成CTime类型? 不得不问:初次使用ADO操作MDB文件的问题,急! 用ATL生成的service,安装完毕开始运行,怎么会突然自己就卸载了呢?(在线等) 急!!!!ATL中怎么重载函数?? c语言正切数学函数在不同程序运算结果不同 一个好几天都没人回答的问题,急急急急急急急急急急急急急急急急急急急 高分,再问串口编程 为什么窗口总被遮挡? 程序在删除gdi+的Pen对象时出错!!! 如何检测一个DSN数据源存在
void CDemo1App::SetODBCSource()
{
CString strAccessPath = m_strExePath + "test.mdb";
int iLen = strAccessPath.GetLength();
char cpConfig[MAX_PATH];
strcpy(cpConfig, "DSN=daliu\0");
strcpy(cpConfig + 10, "DBQ=");
strcpy(cpConfig + 14, strAccessPath);
strcpy(cpConfig + 14 + iLen, "\0");
strcpy(cpConfig + 15 + iLen, "DEFAULTDIR=");
strcpy(cpConfig + 15 + iLen + 11, m_strExePath);
strcpy(cpConfig + 25 + iLen + m_strExePath.GetLength(), "\0\0"); if(!SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"Microsoft Access Driver (*.mdb)\0",cpConfig))
{
//AfxMessageBox("add odbc source failed!");
}
}
而且楼上的好像只能配置Microsoft Access Driver (*.mdb)
其实你要先把数据提供程序驱动枚举出来,再根据需要选择适合自己的。
格式上有什么区别?
HINSTANCE hODBCDll = LoadLibrary("odbccp32.dll");
if (!hODBCDll)
{
AfxMessageBox("动态库加载失败!");
return ;
}
(FARPROC &) SQLConfigDataSource = GetProcAddress
(hODBCDll, "SQLConfigDataSource");
if (!SQLConfigDataSource)
{
FreeLibrary(hODBCDll);
return ;
} //添加数据源
BOOL lreturn = SQLConfigDataSource(NULL,
1,//配置数据源
"SQL Server",//数据库驱动
"DSN = 123\0"//数据源名称
"Server = MyServer\0"//数据库服务器名称或者IP地址
"Database = master\0");//数据库名称