用Delphi编写数据库应用可以不用BDE吗(比如直接用ODBC)

zqshan 2000-06-13 12:33:00
...全文
397 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zqshan 2000-06-16
  • 打赏
  • 举报
回复
谢谢这么多好心的朋友的帮助
higod 2000-06-15
  • 打赏
  • 举报
回复
---- 访 问Paradox 和DBase 以 外 的 数 据 库, 通 常 是 通 过ODBC 来 实 现 的。Delphi 可 以 访 问
支 持ODBC 的 数 据 库 系 统, 如Access、SQL Server 和Oracle 等。 当 然, 通 过ODBC 访 问 数 据
库 时, 首 先 要 使 用Windows 的 控 制 面 板 或Delphi 的 数 据 库 引 擎(BDE) 建 立ODBC 数 据
源。

---- Delphi 提 供 了Database 控 件, 该 控 件 的 作 用 有: 在 应 用 程 序 的 控 制 下 和 数 据 库
系 统 建 立 连 接、 进 行 事 务 处 理 等。 在 数 据 库 应 用 程 序 中, 可 以 使 用Database 控
件, 也 可 以 不 使 用。 如 果 不 使 用Database 控 件, 可 以 直 接 把ODBC 数 据 源 的 名 称
赋 给Table 控 件 的 属 性DatabaseName 而 达 到 访 问 该 数 据 库 的 目 的。 这 种 方 式 的 弊 端
是 在 程 序 运 行 时 由Delphi 系 统 自 动 弹 出 登 录 到 数 据 库 的 英 文 界 面 的 窗 口, 既
不 美 观 又 不 便 于 控 制。 因 此, 笔 者 建 议 在 数 据 库 应 用 程 序 中 使 用Database 控 件
来 登 录 到 数 据 库 系 统。 把Table 控 件 与Database 控 件 关 联 的 方 法 是 把 其DatabaseName
属 性 值 指 定 为Database 控 件 的DatabaseName 属 性 值。 一 个Database 控 件 可 以 管 理 若 干 个
Table 控 件。 和Database 控 件 建 立 关 联 以 后, 只 要 该Database 控 件 已 经 和 数 据 库 建 立
了 连 接,Table 控 件 就 可 以 直 接 访 问 数 据 库 而 无 须 再 次 登 录。

---- 3. 通 过 内 嵌 方 式 访 问

---- Delphi 中 可 以 不 通 过ODBC, 而 以 内 嵌 方 式 访 问SQL Server、Oracle、DB2 等 数 据 库 系
统。 这 需 要 使 用 数 据 库 别 名 来 指 定 数 据 库, 数 据 库 别 名 可 以 事 先 建 立, 也
可 以 在 程 序 运 行 时 动 态 创 建。 前 者 称 为 静 态 别 名, 后 者 称 为 动 态 别 名。 使
用 数 据 库 别 名 来 访 问 数 据 库 的 方 法 和 使 用ODBC 数 据 源 的 情 形 相 同, 这 里 不
再 累 述。 通 过 内 嵌 方 式 访 问 数 据 库 的 静 态 别 名 必 须 在BDE 中 建 立。 以 访 问SQL
Server 数 据 库 为 例, 在 建 立 别 名 时 必 须 指 定 数 据 库 服 务 器 的 名 称(SERVER
NAME)、 主 机 名(HOST NAME) 以 及 要 访 问 的 数 据 库 名 称(DATABASE NAME), 可
以 指 定 登 录 用 户 名(USER NAME) 和 口 令(PASSWORD) 等。 通 过 动 态 创 建 的 别 名
来 访 问 数 据 库 必 须 使 用Database 控 件。 如 何 设 置Database 控 件 中 访 问 数 据 库 的 参
数 呢 ? 用 鼠 标 双 击Database 控 件, 出 现 参 数 设 置 窗 口, 在"Driver name" 一 栏 选 择 要
访 问 的 数 据 库 系 统, 如"MSSQL", 然 后 选 择 按 钮"Defaults", 就 会 把BDE 中 该 数 据 库
系 统 所 需 的 参 数 名 称 和 缺 省 值 加 入 到"Parameter overrides" 列 表 中。 根 据 实 际 情 况
更 改 参 数 中 的"SERVER NAME"、"DATABASE NAME" 等 项。 然 后 选 择 按 钮"OK" 就 可 以
了。 需 要 说 明 的 两 点 是, 以 内 嵌 方 式 访 问 数 据 库 需 要 在 安 装Delphil 3.0 时 指 定
安 装SQL Link;Query 控 件 的SQL 语 句 不 能 以 分 号 结 尾。

pivot 2000-06-15
  • 打赏
  • 举报
回复
Delphi 4中同样可以,以OLE方式创建AOD对象,通过ODBC进行数据访问
xphc 2000-06-14
  • 打赏
  • 举报
回复
//*************** from delphi tips website


Delphi具有强大的数据库应用程序开发功能,其Client/Sever版本可以开发从一般的单机数据库应用系统到普通Client/Sever应用系统、瘦客户型Client/Sever应用系统直到基于Web的多层应用,这其中自然离不开Borland数据库引擎(BDE)的功劳。不过需要注意的是在分发应用程序的时候必须同时分发BDE文件,Borland(Inprise)建议用户使用Delphi附带的InstallShield制作安装程序,以免遗漏BDE文件或BDE文件配置不正确。所需BDE文件根据应用程序所操纵的数据库对象有所不同,最少也需要上兆的空间。这对于大型应用系统来说无足轻重,可是,对于只操纵有限几个数据表并且应用程序(.exe)本身只有几百KB的小型单机数据库应用系统来说似乎有头重脚轻之感。

  那么,有没有办法解决上述矛盾,开发出“瘦”单机应用程序呢?Delphi Client/Sever(3.0+)版本提供了一个TCientDataSet元件,可以解决这个问题。该元件本来是用来开发多层应用中的瘦客户端程序的,其实我们也可以用它来代替BDE及其它数据集元件(TBDEDataSet,TDBDataSet及其派生类)用于单机(单层)应用,只不过在设计期(编程时)操作稍微复杂一些。


  ●编程步骤示例如下:


  1.启动Delphi,建立一个新应用,将Main Form 取名为Form1,从IDE 元件选项板上分别选取一个TClientDataSet元件(取名ClientSataSet1)、一个 TTable元件(取名Table1)、一 个TDataSource元件(取DataSource1)、一个TDBGrid元件(取名DBGrid1,根据具体情况也可以选取其它数据控制元件)放在Form1上 。

  2.通过Object Inspector将Table1的数据库及数据表名属性设为所要操纵的数据库对象,假如没有现成的数据表可用,可以运用Delphi附带的数据库桌面工具(Database Desktop)建立新的数据表。

  3.在Form1上选定ClientDataSet1,点击鼠标右键弹出选单,从中选定Assign local data命令打开ClientDataSet1 Data 对话框,可以发现Table1已在列表框中,选取并确定。这样一来,就将Table1中的数据表完全复制到ClientDataSet1中去了。重新选定ClientDataSet1,点击鼠标右键弹出选单,从中选定Save to file 命令打开保存文件对话框,将ClientDataSet1中的数据保存到一个以cds为默认扩展名的文件中,这里我们取名为MyThin.cds。根据需要还可以从弹出选单中选定Fields Editor命令对数据表字段进行编辑,然后再保存。

  4.将Table1从Form1中删除(此时对于我们的单机应用而言它已完全没有用场了),通过Object Inspector,将DataSource1的DataSet属性设为ClientDataSet1,将DBGrid1的DataSource属性设为DataSource1。假如已将ClientDataSet1的Active属性设为True的话,我们就可以看到数据表的数据已显示在DBGrid1的栅格中。

  5.在Form1的OnCreat事件句柄中键入如下代码:

  ClientDataSet1.LoadFromFile(′MyThin.cds′);

  相应地,在Form1的OnDestroy事件句柄中键入如下代码:

  ClientDataSet1.SaveToFile(′MyThin.cds′);

  6.编译并运行。至此一个“瘦”单机数据库应用框架已经建立。不用附带BDE,可执行文件只有500KB左右(不包括数据.cds文件),一张软盘就能搞定。

  TTable 元件的直接上级是TDBDateSet元件,TDBDataSet的直接上级是TBDEDataSet元件,在TBDEDataSet元件中封装了BDE的API,因此要在运行期操纵TTable元件就必须使用BDE。而TClientDataSet元件的直接上级是与TBDEDataSET的直接上级一样的TDataSet元件,无须使用BDE。我们在设计期将TTable等TDataSet元件中操控的数据复制到TClientDataSet元件中,并保存在数据文件(.cds)中,这样就跳过了BDE,应用程序直接对数据文件(.cds)进行读写。而TClienDataSet元件所封装的对数据进行操纵处理的功能(有很多是重载于TDataSet的虚拟抽象方法和属性)并不比TBDEDataSet元件极其派生类差多少,基本上能满足单机数据库应用的要求。

dudo 2000-06-13
  • 打赏
  • 举报
回复
你可以用database控件,在控件上点右键,打开database editer选择你想要联接的数据库类型,在点一下defaults,设置显示的相关属性,最后给你的database起个别名name).
这种方法不用设置bde,也不用通过odbc,一切联接参数都可在运行是动态设置,可以联接bde支持的所有数据库,包括本地库。在程序打包的时候要包括bde支持文件,还有一个ntwdblib.dll 支持文件,(sql server中的一个支持库,不同的数据库可能不同)支持文件可与程序放一个目录,也可将其放在windows目录下。其实bde 中的有些文件没有,看你要联接的数据库类型而定,一个1M 左右的数据库程序包括bde全部的支持文件大包下来共有6M左右,我联接的是 sql server,经过反复试验,做后压缩到3M左右。
如果还不能解决问题,请email 给我。
shylsz 2000-06-13
  • 打赏
  • 举报
回复
如果是Paradox数据库,Delphi 4可以直接访问。只要指明数据库路径就行了。
hhzh426 2000-06-13
  • 打赏
  • 举报
回复
自己编程序处理,我下载了一个控制,专门处理dbf文件,不用bde或odbc
zqshan 2000-06-13
  • 打赏
  • 举报
回复
那,我不通过BDE访问数据库该怎么办
蝈蝈俊 2000-06-13
  • 打赏
  • 举报
回复
delphi 4 中没有ADO
zqshan 2000-06-13
  • 打赏
  • 举报
回复
delphi 4也可以这样吗?
jilimi 2000-06-13
  • 打赏
  • 举报
回复
在delphi 5 中使用ado 就可以直接通过ODBC,而不用BDE访问数据库。
Limu 2000-06-13
  • 打赏
  • 举报
回复
Yes,you can use ADO (ActiveX Data Object).there are some ADO object such as TADOConnection,TADOCommand,TADORecordset,TADOParameter,TADOField and so on.
蝈蝈俊 2000-06-13
  • 打赏
  • 举报
回复
delphi 5 使用ado 是个不错的选择
Wingsun 2000-06-13
  • 打赏
  • 举报
回复
可以,直接使用ODBC API只是这样比较累,或者使用ADO,OLEDB等数据库访问都可以。

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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