怎样绕过BED,直接使用ODBC(100分)

  • 主题发起人 主题发起人 muzb
  • 开始时间 开始时间
M

muzb

Unregistered / Unconfirmed
GUEST, unregistred user!
我觉得BDE附加文件太大,能否直接利用WINDOWS自带的ODBC完成数据库的连接,所以请教哪位能否给予我答复,我在此先谢过了。
 
ODBC?有可能你用的东东还要大

如果你要在程序中直接使用ODBC,可以采用现成的控件
 
本论坛目前以下带源码的控件,可以脱离 BDE 直接操作 ODBC:

1. <a href=/delphi/attachments/modbc.zip>mODBC</a> (Barton 推荐)
2. <a href=/delphi/attachments/od502.zip>ODBC Express 5.02 for d4 with source</a> (CJ 推荐)
3. <a href=/delphi/attachments/odbc.zip>ODBC接口单元</a> (李颖 制作)

征求带源码的 ADO 控件中 ...
 
如果你用ODBC的建立一个数据源,然后在BDE中使用它,
就象使用一个Alias一样,这种情况下你可以不发布BDE
中的大部分,所有的SQL驱动程序都可以不要,只要几个
核心文件就可以了。但是你反过来又需要安装相应数据库
的ODBC驱动程序,没有便宜可占。
如果你不用ODBC,只用BDE,也可以只发布你使用的数据库
的驱动程序,不必安装完整的BDE,不会很大。
 
yysun你搞错了!

我做的那个ODBC单元纯粹是操作ODBC设置的,
比如取各种设置信息、增删数据源等等。

虽然你大力推荐,但希望不要误传。
 
<a href="http://www.csic.founderpku.com">founderpku</a>
 
有些BDE的驱动程序是基于ODBC而不是原生的,这时直接用ODBC就会好很多.
我还是推荐MODBC,现在的最新版是99/5/18的1.06A版,要稳定很多.

大家在使用MODBC时可能会遇到一个问题:
SELECT,INSERT,DELETE都没有问题,但UPDATE有一点小问题,不是
提示参数错误就是别的什么错.基实你根本不用耽心,因为那是BPL与你在
IDE环境下所调试的程序发生冲突.你要相信你的代码离开IDE后就完全正
常了.

ODBC真好,通用性强,我已经用它制作了不下十个应用程序,反应真好,绝对
强过BDE.去恒通公司的CELL主页下载DAO3.5和ODBC3.0中文版,你在发布软
件时就方便了.
 
barton,我用 mODBC 时,遇到有个问题,
1.RecordCount 函数的算法非常简陋,
2.没有 FindKey / Find Nearest 功能。
特向您请教,您是如何解决的?

ps.“恒通公司的CELL主页” 的 URL 是什么?
 
yysun:
更正一下:
mODBC的最新版是1.06b版(99/6/2),一时还没来得及研究.
1.我从不关心RecordCount,因为我总是用一个Query产生一个数据集,
然后一条条装到一个ListView中,统计ListView.Items.Count即可;
2.你不用TmTable,怎么会遇到FindKey或FindNearest呢?

ps:难道你没用过CELL组件吗?去<a href="http://www.trustsoft.com">恒通公司</a>看看.
 
yysun:对这个很有研究,请教您一个问题,
MODBC的QUERY用DATASOURCE传递参数时是否会出问题呢?
我改您的HTMLCREATER时发现的,改为DAO就好了。
Marlowe:您推荐的东东下不来,能MAIL一个吗?cjcjc@online.sh.cn

看你用什么数据库了:
access:DAO
paradox:BDE
all sql server:native driver or odbc
oracle:bde+sql links //some say it's the fastest solusion
you can also could find bde alternative information at the site
 
barton, 我曾经尝试编写 MyDataset = class(TDataset)
如果重载: GetRecordCount, GetRecNo, SetRecNo.
DBGrid 的垂直滚动条就会有意义/作用,所以想了解这个情况.

FindKey/FindNearest是很有用的,为实现这个功能,TTable中用到了特别的 BDE
函数,DbiGetRecordForKey 和 DbiSetToKey
我想知道 ODBC 中是否有类似的函数.

我还遇到了 Update 问题,请 barton 赐教,
环境: TmQuery(RequestLive=True) + DBGrid + Access 数据库(*.mdb)
症状: 在 DBGrid 中无法改数据内容,报错 Field cannot be updated.

CJ, "用DATASOURCE传递参数"是什么意思?
用两个 TmQuery 做一对多没有问题啊.
建议不要用 DAO,因为它不是 Thread Safe,即无法做多线程访问数据库.
宁可用 ADO, 不过我还没有找到带源码的 ADO 控件
 
yysun:说实话:我也闹不明白,我的错误和你不同:COUNT field incorret
不过一点也不影响我,我自从开始用DELPHI就不用DBGRID
 
yysun:可是我做就是出问题:-(可能是水平问题,呵呵,不过我做
ACCESS之类的数据库,好象线程几乎不用,实际上是从来没用过。
DAO 访问 ACCESS 的效率是不错的。
 
后退
顶部