关于改动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

请大家帮忙看看出什么问题了,要怎么处理,谢谢!
...全文
214 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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 导入库”这个什么意思?

13,870

社区成员

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

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