如何在VC中动态设置ODBC数据源?200分求教

shu 2000-08-21 11:47:00
据我目前了解(也许本人孤陋寡闻),要用VC进行数据库编程,如果选用ODBC的话,
必须在CLASSWIZARD中设置ODBC数据源,这样一来程序只能读取固定位置的数据库文件
(文件名字都不能改),这样作出的程序如何发布?!
似乎用DAO就不存在这样的问题,但我的程序原是别人用ODBC做了很长时间的,请问
各位高手,怎样用ODBC方式随意操作一个数据库呢?
也许就没这样的限制吧?我的基本概念错了?但没见一本书上说过这些问题,似乎那样
编程是理所当然的,见鬼!
...全文
421 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
scklotz 2001-08-27
  • 打赏
  • 举报
回复
#include "odbcinst.h"
在program , setting ,, link 里加入 odbccp32.lib
sunlightbj 2001-05-18
  • 打赏
  • 举报
回复
有人回答吗
sunlightbj 2001-05-18
  • 打赏
  • 举报
回复
那位大侠可不可以告诉我SQLConfigDataSource函数在那里加入啊,我怎么不对呀
另:出这种错误为什么error C2065: 'SQLConfigDataSource' : undeclared identifier
如果在这个函数前加入::的话,又出现这样的错误:
error C2039: 'SQLConfigDataSource' : is not a member of '`global namespace''
请指教
myb123 2001-03-19
  • 打赏
  • 举报
回复
听课
casl 2000-08-23
  • 打赏
  • 举报
回复
方法:使用SQLConfigDataSource函数。如:
SQLConfigDataSource(NULL,ODBC_ADD_DSN,
(LPSTR)"Microsoft Access Driver (*.mdb)\0",
(LPSTR)"DSN=TestDB\0DBQ=D:\\Database\\Friends.mdb\0
DEFAULTDIR=D:\\DATABASE\0\0");
添加一个ODBC数据源,其类型为ACCESS.
dzl 2000-08-23
  • 打赏
  • 举报
回复
动态设置ODBC数据源可以参考一下以下函数(注意所需的LIB):
SQLConfigDataSource(......)
SQLConfigDriver(...)
SQLInstallDriver(...)
SQLRemoveDriver(...)
zzh 2000-08-23
  • 打赏
  • 举报
回复
当数据库的结构不改变的话,可以使用从ClassWizard派生的类,这里面你只需把GetDefaultSQL()函数改变一下就可以了。这可以通过读取配置文件或注册表中的信息来进行修改。
如果使用SQL API来进行数据库操作,当数据库结构改变时,改变的代码要比用MFC的小,如果你认为这两种子方式都不好,可以使用ADO方式。又快又方便。
zfming 2000-08-23
  • 打赏
  • 举报
回复
我用C++Builder编程,也遇到了这个问题,谁能给出一个详细解法?
netspirit 2000-08-21
  • 打赏
  • 举报
回复
在VC中使用ODBC编程当然也可以动态设置ODBC数据源。 你如果使用CLASSWIZARD中的功能的话,所指定的数据库名、表名,还有所选的字段也可以修改,只是修改起来要该的东西太多了一点。
如果你去了解一些ODBC的API函数的话,你会发现使用这些API函数编制程序是非常的简单而且灵活,当然可以(简单地)在程序运行时来选择设置数据库、表以及字段。你在MSDN中查找一下关于SQL开头的几个函数(如SQLAllocHandle、SQLSetEnvAttr、SQLDriverConnect、SQLExecDirect、SQLCloseCursor等),我做过的,甚至你还可以做到使用字符串连接数据库,而不再需要在ODBC数据源中建立DSN文件。
好象是机械工业出的一本关于数据库编程的书里面有一些有用的帮助。
yaly 2000-08-21
  • 打赏
  • 举报
回复
<电脑编程技巧与维护>杂志2000年3月出版,上面有一道例题.
kingwill 2000-08-21
  • 打赏
  • 举报
回复
我每次做ODBC都不喜欢用向导连接数据库。我是这样作的:(首先,ODBC里有你用的数据库)
CDataBase m_odbc;
CRecordSet m_odbcset;
m_odbcset.m_pDataBase=&m_odbc(这一句是自己连接ODBC和RECORD的必要的)
下面注意:::
m_odbc.Open(_T( "DATABASE--NAME" ), FALSE,FALSE, _T( "ODBC;UID=用户名;PSW=密码" ))
m_odbcset.Open(CRecordset::dynaset,
_T( "Select L_Name from Customer where ..." ) );
这样就行了。但是,由于是自己连的ODBC,所以,你在写下m_odbcset.的时候,不会出现成员表。但是,程序是好的。我一直这样做。。




16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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