关于改动ODBC配置的问题

geneshell 2010-04-19 12:03:39
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "UnitODBC.h"
#include "odbcinst.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormODBC *FormODBC;
//---------------------------------------------------------------------------
__fastcall TFormODBC::TFormODBC(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFormODBC::ButtonLocalhostClick(TObject *Sender)
{
SQLConfigDataSource(this,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\Server=localhost");
}
//---------------------------------------------------------------------------

代码如上,想点击ButtonLocalhost按钮之后将名为localization的System DSN的server改为localhost,但是我运行之后报错如下:
[ILINK32 Error] Error: Unresolved external 'SQLConfigDataSource' referenced from C:\DOCUMENTS AND SETTINGS\GENE XIE\DESKTOP\MY WORK\LOCALIZATION\RESEARCH_EVN\DEBUG\UNITODBC.OBJ

请大家帮忙看看出什么问题了,要怎么处理,谢谢!
...全文
205 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
geneshell 2010-08-01
  • 打赏
  • 举报
回复
还是没动静,看来得再继续研究下,谢谢楼上各位支持
柯本 2010-04-20
  • 打赏
  • 举报
回复
是我记错了,应该这样
SQLConfigDataSource(0,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\0Server=localhost\0");
如果第一参数为Handle,会出现对话框.为0的话,自动完成


geneshell 2010-04-20
  • 打赏
  • 举报
回复
谢谢Keiy,已经不再报错,可以运行了,但是那个按钮点击之后没有生效嘛

具体情况是这样的,我已经有了一个叫localization的System DSN,它的Server是指向某台服务器,我想通过这个按钮点击之后将它的Server设置为localhost,我下面这句话的这么写没错吧
“SQLConfigDataSource(Handle,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\\Server=localhost");”
YeBinYe 2010-04-19
  • 打赏
  • 举报
回复
若要使用 ::SQLConfigDataSource,必须包括 Odbcinst.h 头文件并使用 Odbcinst.lib 导入库。另外,Odbccp32.dll(对于 16 位系统为 Odbcinst.dll)必须在运行时路径中。
YeBinYe 2010-04-19
  • 打赏
  • 举报
回复
你使用了ODBC库文件中的函数,而系统在指定的路径又找不到该库文件。
将SQLConfigDataSource改为:
::SQLConfigDataSource(this,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\Server=localhost");
柯本 2010-04-19
  • 打赏
  • 举报
回复
我在2010下测试了一下,的确不行了,因为新版的odbccp32.dll已改变
解决方案:
进入命令行,并在工程目录下执行:
implib odbccp32n c:\windows\system32\odbccp32.dll
然后在你原程序中改
#pragma link "odbccp32.lib"

#pragma link "odbccp32n.lib"
并改
::SQLConfigDataSource(this,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\\Server=localhost");

SQLConfigDataSource(Handle,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\\Server=localhost");
就OK了
(以上程序在BDS2010+WIN7下通过)
原程序在bcb6上可以运行
geneshell 2010-04-19
  • 打赏
  • 举报
回复
Error remains~!

哪位筒子来帮忙看一下,谢谢~!
geneshell 2010-04-19
  • 打赏
  • 举报
回复
#include <vcl.h>
#pragma hdrstop

#include "UnitODBC.h"
#include "odbcinst.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma link "odbccp32.lib"
TFormODBC *FormODBC;
//---------------------------------------------------------------------------
__fastcall TFormODBC::TFormODBC(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFormODBC::ButtonLocalhostClick(TObject *Sender)
{
::SQLConfigDataSource(this,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\\Server=localhost");
}
//---------------------------------------------------------------------------

现在程序改成这样了,还是一样的出错信息,前面的两个冒号去掉也是一样的
btw,我用的是Codegear 2009
柯本 2010-04-19
  • 打赏
  • 举报
回复
BCB本身就有odbc支持,在程序头上加
#include <odbcinst.h>
#pragma link "odbccp32.lib"
就可以了
另外
SQLConfigDataSource(this,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\Server=localhost");
中的\要改为\\
geneshell 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yeyanbin 的回复:]

你使用了ODBC库文件中的函数,而系统在指定的路径又找不到该库文件。
将SQLConfigDataSource改为:
C/C++ code
::SQLConfigDataSource(this,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\Server=localhost");
[/Quote]

按照你说的这个方法试过了,还是同样的出错信息
geneshell 2010-04-19
  • 打赏
  • 举报
回复
已经包括 Odbcinst.h 头文件,Odbccp32.dll在system32文件夹中

但是“使用 Odbcinst.lib 导入库”这个什么意思?
使用说明图文版地址: 在Windows环境下编译、配置 eAccelerator 加速PHP 附eAccelerator.dll for php5.3.8 nts下载: http://www.oaxueyuan.com/compiled-in-a-windows-environment-configuration-eaccelerator-php-acceleration.html Win32下编译的IIS + PHP5.3.8 的 eAccelerator.dll 文件下载 eAccelerator.dll For 5.3.8 nts Windows: http://www.oaxueyuan.com/win32-compiles-under-iis-php5-3-8-of-eaccelerator-dll-download-eaccelerator-dll-for-5-3-8-ntswindows.html eAccelerator 配置参数详解: http://www.oaxueyuan.com/eaccelerator-configuration-parameters-explain.html 下面是文字版,如果您无法上网,可以参考下面资料: 在Windows环境下编译、配置 eAccelerator 加速PHP 附eAccelerator.dll for php5.3.8 nts下载 本文使用到的程序以及版本下载地址如下: (笔者使用fast-cgi模式运行php,请根据自己的实际情况进行相关的改动配置,本文附件提供php5.3.6VC9nts以及php5.2.17vc6nts(使用VC6.0编译)编译后的 eAccelerator v0.9.6.1下载 。) Php5.3.6(VC9 x86 Non Thread Safe)下载地址:http://windows.php.net/download/ Php5.3.6源文件(PHP 5.3.6 (tar.bz2) 下载地址:http://www.php.net/downloads.php eAccelerator v0.9.6.1(源文件)下载地址:http://eaccelerator.net/ Visual Studio 2008 express下载地址:http://msdn.microsoft.com/zh-cn/express/ Nginx1.0.0 下载地址:http://nginx.org/en/download.html bison.exe 下载地址:http://gnuwin32.sourceforge.net/packages/bison.htm(此文附件也提供下载) ———————————————————– 好了,我们现在开始: 第一步、解压下载到得php5.3.6源文件包tar.bz2包到C盘c:/phpsrc,并且解压php5.3.6(VC9 x86 Non Thread Safe,也就是能够正常使用的php压缩包文件)到C:/php,我们只需要里面的一个文件C:/php/dev/ php5.lib,复制php5.lib到c:/phpsrc。 第二部、复制bison.exe到C:/Program Files/Microsoft Visual Studio 9.0/VC/bin(也就是Visual Studio 2008 express安装后的路径) 第三部、在这里我们开始生成生成config.w32.h。打开开始菜单找到Visual Studio 2008里面的命令提示,在里面操作: 进入:c:/phpsrc执行buildconf.bat, 建立一个临时环境变量 执行set path=%path%;C:/phpsrc/bin 执行 cscript /nologo configure.js –with-php-build=”../phpsrc” –without-libxml –disable-odbc –disable-zts 如果想要Thread Safe 模式就去掉上面的命令最后的参数 –disable-zts 然后看看是不是main下面多了一个 config.w32.h 第四步、在C:/phpsrc/ext下建立文件夹eaccelerator将eAccelerator v0.9.6.1(源文件)解压后里面的全部文件复制到C:/phpsrc/ext/eaccelerator文件夹内,启动Visual Studio 2008打开C:/phpsrc/ext/eaccelerator/win32/eAccelerator.dsw文件,点击Visual Studio 2008菜单“生成->配配置管理器-活动解决方案配置-Release-NTS-关闭”–>“生成->生成eAccelerator” OK,这时候你会发现C:/phpsrc/ext/eaccelerator/win32/Release里面已经生成了一个eAccelerator.dll文件,将此文件复制到c:/php/ext里面即可现在这个文件已经能够使用了,并且是根据你现在正在使用的php版本生成的eAccelerator。 ————————————————————– 下面是配置eAccelerator,在C盘建立目录eAccelerator 打开PHP.INI 在文件最末增加以下代码: [eAccelerator] zend_extension=”C:/php-5.3.8-nts-Win32-VC9-x86/ext/eAccelerator.dll” eaccelerator.shm_size=”128″ eaccelerator.cache_dir=”C:/phpcache/eAcceleratorCache” eaccelerator.enable=”1″ eaccelerator.optimizer=”1″ eaccelerator.check_mtime=”1″ eaccelerator.debug=”0″ eaccelerator.filter=”" eaccelerator.shm_max=”0″ eaccelerator.shm_ttl=”3600″ eaccelerator.shm_prune_period=”3600″ eaccelerator.shm_only=”0″ eaccelerator.compress=”1″ eaccelerator.compress_level=”9″ eaccelerator.keys=”disk_only” eaccelerator.sessions=”disk_only” eaccelerator.content=”disk_only” ;这是控制面板的地址,安装包里有个control.php,你把它复制到网站的任意目录,可以用它查看和管理,这个必须指定,否则查看缓存内容的时候会出错 eaccelerator.allowed_admin_path=”C:/websites/eaccelerator” 关于eAccelerator的详细配置请查阅:www.oaxueyuan.com/eaccelerator-configuration-parameters-explain.html 重新启动php-cgi.exe,OK,配置完成! 附件下载: 注意,编译本文件,必须使用VS 2008 ,即编译为VC9的版本,不然在系统日志里会报错,上一个版本我是用VS2010编译的,出错信息为: “弹出应用程序: Warning: PHP Startup: eAccelerator: Unable to initialize module Module compiled with build ID=API20090626,NTS,VC10 PHP compiled with build ID=API20090626,NTS,VC9 These options need to match 有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持” 有关Zend配置部分,说参阅OA学院 http://www.oaxueyuan.com

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧