首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于改动ODBC配置的有关问题

2012-02-04 
关于改动ODBC配置的问题//---------------------------------------#include vcl.h#pragma hdrstop#incl

关于改动ODBC配置的问题
//---------------------------------------

#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

请大家帮忙看看出什么问题了,要怎么处理,谢谢!

[解决办法]
你使用了ODBC库文件中的函数,而系统在指定的路径又找不到该库文件。
将SQLConfigDataSource改为:

C/C++ code
::SQLConfigDataSource(this,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\Server=localhost");
[解决办法]
若要使用 ::SQLConfigDataSource,必须包括 Odbcinst.h 头文件并使用 Odbcinst.lib 导入库。另外,Odbccp32.dll(对于 16 位系统为 Odbcinst.dll)必须在运行时路径中。

[解决办法]
BCB本身就有odbc支持,在程序头上加
#include <odbcinst.h>
#pragma link "odbccp32.lib"
就可以了
另外
SQLConfigDataSource(this,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\Server=localhost");
中的\要改为\\
[解决办法]
我在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上可以运行

[解决办法]
是我记错了,应该这样
SQLConfigDataSource(0,ODBC_CONFIG_SYS_DSN,"MySQL ODBC 5.1 Driver","DSN=localization\0Server=localhost\0");
如果第一参数为Handle,会出现对话框.为0的话,自动完成


热点排行