数据库的程序发表~!~!中的一个问题~!》》》数据源 当程序编译完成,才运行的时候,都要先建立一个数据源但是发表后,不可能安装到其他的计算机后,用户都要从控制面板里面去设置数据源吧,这样不是很麻烦~!这个问题应该怎么解决?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没写全 char* szDesc; int mlen; szDesc=new char[256]; sprintf(szDesc,"DSN=%s: DESCRIPTION=TOC support source: DBQ=%s: FIL=MicrosoftAccess: DEFAULTDIR=D:\\Database:: ","TestDB","D:\\Friends.mdb"); mlen = strlen(szDesc); for (int i=0; i<mlen; i++) { if (szDesc[i] == ':') szDesc[i] = '\0'; } if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc)) MessageBox(hwnd,"Failed","INFORMATION",MB_OK); else MessageBox(hwnd,"Sucess","INFORMATION",MB_OK); break; } 创建ODBC数据源可以通过调用windows系统子目录下的动态链接库Odbcint.dll中的函数SQLConfigDataSource来实现。该函数可以动态地增加、修改和删除数据源。其函数原型如下:BOOL SQLConfigDataSource(HWND hwndParent, //父窗口句柄UINT fRequest, //操作类型LPCSTR lpszDriver, //数据库引擎名称PLCSTR lpszAttributes //数据源配置属性);参数hwndParent是父窗口句柄, 如果把它设置为空NULL,ConfigDataSource将不显示数据源设置对话框,否则按照以下方式调用。比如:SQLConfigDataSource(m_hWnd,ODBC_ADD_DSN,m_driver,attr);fRequest的取值有以下几种ODBC_ADD_DSN 增加一个数据源 ODBC_CONFIG_DSN 配置修改一个存在的数据源ODBC_REMOVE_DSN 删除一个已经存在的数据源ODBC_ADD_SYS_DSN ODBC_CONFIG_SYS_DSN ODBC_REMOVE_SYS_DSN 就是系统的了而参数lpszDriver是数据库引擎的名称,比如是加载的是ACCESS数据库, 那么名称就是"Microsoft Access Driver(*.mdb)"参数lpszAttributes为一连串形如"KeyName=***"的字符串,两个keyname之间用"\0"字符隔开。其主要是数据源缺省的驱动程序注册说明,而最主要的关键字是新数据源的名称DSN,其余关键字则根据不同的数据源有不同的要求。获取系统中已经安装的数据库驱动器信息可以通过SQLGetInstalledDrivers函数来实现。该函数定义如下:BOOL SQLGetInstalledDrivers(LPSTR lpszBuf, //保存驱动器信息的缓冲区WORD cbBufMax, //缓冲区最大长度WORD * pcbBufOut //返回的实际使用的缓冲区长度); 数值难题 VC采用钩子关闭提示框窗口 vc c# 操作word问题 动态创建 深入浅出MFC CWebBrowse2怎样控制下载内容 我在 CSDN 上的提問,幾乎都沒得到過答案。回復的人也寥寥無幾。 线程问题?大家帮我看看我的线程为何终止不了? 为什么我的数据库总是连接不上? 200元!!!!急!急!急!急!100分。毕业设计题目:植物四季变化动态演示! 屏幕鼠标位置判断简单问题请教,很急,多谢! 从数据库中读取图片的问题(在线等) 如何让ListView (report样式)具有整行选择和鼠标热跟踪功能?
char* szDesc;
int mlen;
szDesc=new char[256];
sprintf(szDesc,"DSN=%s: DESCRIPTION=TOC support source: DBQ=%s: FIL=MicrosoftAccess: DEFAULTDIR=D:\\Database:: ","TestDB","D:\\Friends.mdb");
mlen = strlen(szDesc);
for (int i=0; i<mlen; i++)
{
if (szDesc[i] == ':')
szDesc[i] = '\0';
} if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc))
MessageBox(hwnd,"Failed","INFORMATION",MB_OK);
else
MessageBox(hwnd,"Sucess","INFORMATION",MB_OK); break;
}
其函数原型如下:
BOOL SQLConfigDataSource(
HWND hwndParent, //父窗口句柄
UINT fRequest, //操作类型
LPCSTR lpszDriver, //数据库引擎名称
PLCSTR lpszAttributes //数据源配置属性
);
参数hwndParent是父窗口句柄, 如果把它设置为空NULL,ConfigDataSource将不显示数据源设置对话框,否则按照以下方式调用。比如:
SQLConfigDataSource(m_hWnd,ODBC_ADD_DSN,m_driver,attr);
fRequest的取值有以下几种
ODBC_ADD_DSN 增加一个数据源 ODBC_CONFIG_DSN 配置修改一个存在的数据源
ODBC_REMOVE_DSN 删除一个已经存在的数据源
ODBC_ADD_SYS_DSN ODBC_CONFIG_SYS_DSN ODBC_REMOVE_SYS_DSN 就是系统的了
而参数lpszDriver是数据库引擎的名称,比如是加载的是ACCESS数据库, 那么名称就是"Microsoft Access Driver(*.mdb)"
参数lpszAttributes为一连串形如"KeyName=***"的字符串,两个keyname之间用"\0"字符隔开。其主要是数据源缺省的驱动程序注册说明,而最主要的关键字是新数据源的名称DSN,其余关键字则根据不同的数据源有不同的要求。获取系统中已经安装的数据库驱动器信息可以通过SQLGetInstalledDrivers函数来实现。该函数定义如下:
BOOL SQLGetInstalledDrivers(
LPSTR lpszBuf, //保存驱动器信息的缓冲区
WORD cbBufMax, //缓冲区最大长度
WORD * pcbBufOut //返回的实际使用的缓冲区长度
);