社区
数据库
帖子详情
在VC中如何自动配置ODBC?
zhucunwang2008
2008-11-10 06:13:48
请问:在VC++6.0中如何自动配置ODBC?
...全文
209
9
打赏
收藏
在VC中如何自动配置ODBC?
请问:在VC++6.0中如何自动配置ODBC?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
内存泄漏
2008-11-12
打赏
举报
回复
自动添加数据源的代码如下:
#include <odbcinst.h>
char szDesc[223];
int mlen;
sprintf(szDesc,"DSN=%s? DBQ=%s? DEFAULTDIR=%s?? ","TryDB","D:\\Database\\try.mdb","D:\\DATABASE");
mlen = strlen(szDesc);
for (int i=0; i<mlen; i++)
{
if (szDesc[i] == '?')
szDesc[i] = '\0';
}
SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc);
ddszhan
2008-11-11
打赏
举报
回复
直接写注册表也可以:
#define REG_ODBC _T("SOFTWARE\\ODBC\\ODBC.INI\\MyDB")
#define REG_ODBC_NAME _T("MyDB")
HKEY hKey;
char lstrPath[255]={0};
GetCurrentDirectory(255, lstrPath);
strcat(lstrPath, _T("\\"));
strcat(lstrPath, MDBFILE_NAME);
// 查找数据源
LONG lResult=RegOpenKey(HKEY_LOCAL_MACHINE, REG_ODBC, &hKey);
if (lResult == ERROR_SUCCESS)
{
DWORD nLength=0;
char lstrDBQ[255]={0};
// 验证数据库文件位置
lResult=::RegQueryValueEx(hKey,_T("DBQ"),0L,0L,(BYTE * )(lstrDBQ),&nLength);
RegCloseKey(hKey);
if (lResult==ERROR_SUCCESS && !_tcscmp(lstrDBQ,lstrPath))
{
return TRUE;
}
else
{
::RegDeleteKey(HKEY_LOCAL_MACHINE,REG_ODBC);
}
}
DWORD dwValue;
CString strSubKey;
char sysDir[MAX_PATH];
char drvName[]=_T("\\ODBCJT32.dll");
::GetSystemDirectory(sysDir,MAX_PATH);
strcat(sysDir, drvName);
CFileFind findFile;
if (!findFile.FindFile(sysDir))
{
AfxMessageBox(LoadString(IDS_LOADDBDRV), MB_OK|MB_ICONSTOP);
return FALSE;
}
strSubKey=REG_ODBC;
lResult=::RegCreateKeyEx(HKEY_LOCAL_MACHINE,(LPCTSTR)strSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey,&dwValue);
if (lResult != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return FALSE;
}
// 添加数据源
CString strDbq=lstrPath;
CString strDriver=sysDir;
DWORD dwDriverId = 25;
CString strFil=_T("MS Access;");
DWORD dwSafeTransactions=0;
CString strUid=_T("");
CString strPwd=_T("");
CString strDescript=_T("My Demo Database");
::RegSetValueEx(hKey,_T("DBQ"),0L,REG_SZ,(CONST BYTE * )((LPCTSTR) strDbq),strDbq.GetLength()+1);
::RegSetValueEx(hKey,_T("Description"),0L,REG_SZ,(CONST BYTE * )((LPCTSTR)strDescript),strDescript.GetLength()+1);
::RegSetValueEx(hKey,_T("Driver"),0L,REG_SZ,(CONST BYTE * )((LPCTSTR)strDriver),strDriver.GetLength()+1);
::RegSetValueEx(hKey,_T("DriverId"),0L,REG_DWORD,(CONST BYTE * )(&dwDriverId),sizeof(dwValue));
::RegSetValueEx(hKey,_T("FIL"),0L,REG_SZ,(CONST BYTE * )((LPCTSTR)strFil),strFil.GetLength()+1);
::RegSetValueEx(hKey,_T("SafeTransactions"),0L,REG_DWORD,(CONST BYTE *)(&dwSafeTransactions),sizeof(dwValue));
::RegSetValueEx(hKey,_T("UID"),0L,REG_SZ,(CONST BYTE *)((LPCTSTR)strUid),strUid.GetLength()+1);
::RegSetValueEx(hKey,_T("PWD"),0L,REG_SZ,(CONST BYTE *)((LPCTSTR)strPwd),strPwd.GetLength()+1);
::RegCloseKey(hKey);
// 子键
strSubKey += _T("\\Engines\\Jet");
lResult=::RegCreateKeyEx(HKEY_LOCAL_MACHINE,(LPCTSTR)strSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey,&dwValue);
if (lResult != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return FALSE;
}
//设置子键下的各项参数
CString strImplict=_T("");
CString strUserCommit=_T("Yes");
DWORD dwPageTimeout=5;
DWORD dwThreads=3;
DWORD dwMaxBufferSize=2048;
::RegSetValueEx(hKey,_T("ImplicitCommitSync"),0L,REG_SZ,(CONST BYTE *)((LPCTSTR)strImplict),strImplict.GetLength() + 1);
::RegSetValueEx(hKey,_T("MaxBufferSize"),0L,REG_DWORD , (CONST BYTE *)(&dwMaxBufferSize),sizeof(dwValue));
::RegSetValueEx(hKey,_T("PageTimeout"),0L,REG_DWORD,(CONST BYTE *)(&dwPageTimeout),sizeof(dwValue));
::RegSetValueEx(hKey,_T("Threads"),0L,REG_DWORD,(CONST BYTE * )(&dwThreads),sizeof(dwValue));
::RegSetValueEx(hKey,_T("UserCommitSync"),0L,REG_SZ,(CONST BYTE *)((LPCTSTR)strUserCommit),strUserCommit.GetLength());
::RegCloseKey(hKey);
//设置odbc数据库引擎名称
lResult=::RegCreateKeyEx(HKEY_LOCAL_MACHINE,_T("SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources"),0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey,&dwValue);
if (lResult != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return FALSE;
}
CString strDbType=_T("Microsoft Access Driver (*.mdb)");
::RegSetValueEx(hKey,REG_ODBC_NAME,0L,REG_SZ,(CONST BYTE *)((LPCTSTR)strDbType),strDbType.GetLength());
RegCloseKey(hKey);
scq2099yt
2008-11-11
打赏
举报
回复
ODBC API提供了动态创建数据源的函数SQLConfig DataSource。该函数的原型如下:
BOOL SQLConfigDataSource ( HWND hwndParent,WORD fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes );
参数说明如下:
(1)hwndParent用于指定父窗口句柄,在不需要创建数据源对话框时,可以将该参数指定为NULL。
(2)参数fRequest用于指定函数的操作内容,取值如下:
ODBC_ADD_DSN: 加入一个新的用户数据源;
ODBC_CONFIG_DSN:修改一个存在的用户数据源;
ODBC_REMOVE_DSN:除一个存在的用户数据源;
ODBC_ADD_SYS_DSN:增加一个新的系统数据源;
ODBC_CONFIG_SYS_DSN:配置或者修改一个存在的系统数据源;
ODBC_REMOVE_SYS_DSN:删除一个存在的系统数据源;
ODBC_REMOVE_DEFAULT_DSN:删除省缺的数据源说明部分。
(3)lpszDriver用于指定ODBC数据源的驱动
程序类别,例如,为了指定Access数据源,该参数应赋以字符串“Microsoft Access Driver (*.mdb)\0”;对SQL SERVER数据源,则应赋以字符串“SQL Server”。
(4)参数lpszAttributes用于指定ODBC数据源属性。这个是具体的ODBC数据源连接字符串,如果不会写可以先用Windows提供有ODBC配置生成一个ODBC文件后再用记事本打开按它的格式自己写就行了。
samuellei
2008-11-11
打赏
举报
回复
在ODBC数据源管理器建DSN
liuweibit
2008-11-11
打赏
举报
回复
学习!
ypine
2008-11-11
打赏
举报
回复
up
lirongjun1985
2008-11-10
打赏
举报
回复
先在控制面板---管理工具 建立ODBC数据源
xsc2001
2008-11-10
打赏
举报
回复
ODBC API提供了动态创建数据源的函数SQLConfig DataSource。该函数的原型如下:
BOOL SQLConfigDataSource ( HWND hwndParent,WORD fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes );
参数说明如下:
(1)hwndParent用于指定父窗口句柄,在不需要创建数据源对话框时,可以将该参数指定为NULL。
(2)参数fRequest用于指定函数的操作内容,取值如下:
ODBC_ADD_DSN: 加入一个新的用户数据源;
ODBC_CONFIG_DSN:修改一个存在的用户数据源;
ODBC_REMOVE_DSN:除一个存在的用户数据源;
ODBC_ADD_SYS_DSN:增加一个新的系统数据源;
ODBC_CONFIG_SYS_DSN:配置或者修改一个存在的系统数据源;
ODBC_REMOVE_SYS_DSN:删除一个存在的系统数据源;
ODBC_REMOVE_DEFAULT_DSN:删除省缺的数据源说明部分。
(3)lpszDriver用于指定ODBC数据源的驱动
程序类别,例如,为了指定Access数据源,该参数应赋以字符串“Microsoft Access Driver (*.mdb)\0”;对SQL SERVER数据源,则应赋以字符串“SQL Server”。
(4)参数lpszAttributes用于指定ODBC数据源属性。这个是具体的ODBC数据源连接字符串,如果不会写可以先用Windows提供有ODBC配置生成一个ODBC文件后再用记事本打开按它的格式自己写就行了。
Kudeet
2008-11-10
打赏
举报
回复
SQLConfigDataSource 函数
http://dev.21tx.com/2005/06/02/12666.html
还有很多的示例,网上搜
自动
配置
ODBC
的程序
VC
实现
ODBC
的
自动
配置
。
VC
++
自动
配置
ODBC
数据源.zip_
Vc
_
odbc
_seasonsxg_
vc
数据库
配置
_
自动
配置
数据源
VC
++
自动
配置
ODBC
数据源的例子,填写
ODBC
配置
时所必需的用户名称、服务器名称、数据库名称、
ODBC
名称后,程序将按照上述信息
自动
配置
添加一个
ODBC
数据源。
VC
6工程,非常好用。
用
VC
#.NET开发交互式CAD系统
用
VC
#.NET开发交互式CAD系统,包括结合GDI+和OPENGL两种方案。 联系平台客服可开发票。
VC
++
自动
配置
ODBC
数据源
摘要:
VC
/C++源码,数据库应用,
ODBC
,数据源 本源码演示如何使用
VC
++
自动
配置
ODBC
数据源,填写
ODBC
配置
时所必需的用户名称、服务器名称、数据库名称、
ODBC
名称后,程序将按照上述信息
自动
配置
添加一个
ODBC
数据源。...
VC
与Labview、Matlab编程论文资料[2].rar
MATLAB与
VC
混合编程技术在数控机床动态特性监测分析
中
的 Matlab与
VC
通用接口程序的实现.pdf MATLAB
中
调用
VC
混合编程方法的研究与实现.pdf MATLAB和LabVIEW混合编程及在控制系统
中
的应用.pdf MATLAB和
VC
_联合编程...
数据库
4,012
社区成员
39,817
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章