DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: sprblck
今日帖子: 14
在线用户: 15
导航: 论坛 -> 论坛精华贴 斑竹:liumazi,iamdream  
作者:
男 merlinfang (merlinfang) ★☆☆☆☆ -
盒子活跃会员
2003/4/2 12:22:00
标题:
在Delphi中不设置BDE连接数据库 浏览:9724
加入我的收藏
楼主: 里有三种方法: 
一是不使用通过BDE连接数据库的控件,但对于大多数程序员来说并不实际, 
二是调用BDE的API函数来完成Alias修改,这种方法可行,但需要我们学习BDE复杂的API函数,且BDE单元的某些封装函数与Delphi的标准函数存在冲突,相对本文主要提到的第三种方法,这种方法是比较麻烦的。 
第三种方法是在程序中设置Database元件的Params属性来取代设置的BDE的Alias的功能。以下我就对这第三种方法详细介绍一下: 
其实在Delphi的TDatabase控件已经把BDE的Alias的各种属性全部封装在Params属性中了,通过修改这个属性可以该你的应用程序适就不同的用户。甚至可以很简单的单机版和网络版之间转换,下面的介绍分别以设置本地数据库连接和设置MSSQL数据库连接两种来说明,对于其他类型如DB2或其他类型的数据库,只要你会设置BDE就可以触类旁通。 
设置本地数据库: 
本地数据库是指PARADOX的DB数据文件和FoxPro的DBF数据文件。数据库是指存放这些数据文件的文件夹,我们在BDE中设置时只需要设置好Path属性即可,在这里也只需要设置这个主要的Params。请看下面的代码: 
Var Database:Tdababase; 
  Query:Tquery; 
SPath:String; 
Function OpenDatabase:Boolean; 
Begin 
  GetDatabasePath;//得到数据库的存放路径,可以是从注册表中读出或由用户选择或其他任何方式。 
  If DirectoryExists(sPath) then 
  Begin 
    DataBase.LoginPrompt:=False; 
    Database.DatabaseName:='MyDatabase';//自定义一个DatabaseName; 
  Database.AliasName:=';清空AliasName属性; 
  Database.DriverName:='STANDARD';//本地数据库设成STANDARD; 
    Database.Params.Clear; 
  Database.Params.Add('Path='+ sPath//设置数据库路径; 
  Query.Databasename:=Database.DatabaseName; 
  Query.SQL.Clear; 
  Query.SQL.Add('...' 
  try 
  Query.Open; 
        Except 
          Showmessage('Open Table Error!' 
          Raise; 
End; 
End; 
End; 
设置MSSQL数据库: 
设置MSSQL数据库比本地数据库稍微复杂一点,需要设置的内容多些,在BDE中需要设置:Server Name(连接的MSSQL服务器的机器名)、Database name(连接的数据库名)、User Name(数据库用户名,对于新安装的MSSQL可用超级用户名sa),在连接数据库时还需要输入:Password(数据库用户口令,新安装的MSSQL超极用户口令为空)。那在程序中也只需要设置这几项即可:请看代码: 
Var Database:Tdababase; 
  Query:Tquery; 
sServerName,sDatabaseName,sUserName,sPassword:String; 
Function OpenDatabase:Boolean; 
Begin 
  GetDatabaseParams;//得到数据库的连接所需要的四个参数,可以是从注册表中读出或由用户选择或其他任何方式。 
  DataBase.LoginPrompt:=False; 
Database.DatabaseName:='MyDatabase';//自定义一个DatabaseName; 
Database.AliasName:=';清空AliasName属性; 
Database.DriverName:='MSSQL';//MSSQL数据库设成MSSQL; 
  Database.Params.Clear; 
Database.Params.Add('Server Name='+ sServerName//设置数据库路径; 
Database.Params.Add('Database Name='+ sDatabaseName//设置数据库路径; 
Database.Params.Add('User Name='+ sUserName//设置数据库路径; 
Database.Params.Add('Password='+ sPassword//设置数据库路径; 
Try 
  Database.Open;//尝试打开数据库。 
Except 
  Showmessage('Open Database Error!'//如果不能打开数据库。 
  Raise; 
End; 
Query.Databasename:=Database.DatabaseName; 
Query.SQL.Clear; 
Query.SQL.Add('...' 
Query.Open; 
End; 
程序可以在第一次启动时由用户输入,然后记录在注册表中或其他地方,第二次无需输入,直接从上次的记录读入,如果服务器修改,则修改记录即可,或者干脆在打开数据库出错后清空记录,再由用户输入。 
细心的读都者可能注意到本地数据库是通过是否能打开一个表的数据来判数据能否打开数据库,是因为即使文件夹不存在,数据库也能正常打开。而MSSQL数据库不一样,打开数据库出错表示可能有下面几种情况:网络连接不正常、MSSQL服务器没有启动、MSSQL服务器没指定的数据库、用户名或口令错误。 
以上代码在Windows98/2000和Delphi5环境下调试能过。如有疑问Email:Aizb@163.net或到天极BBS:bbs.yesky.com的Delphi版来讨论。
----------------------------------------------
欢迎进入mop.6to23.com
作者:
男 xinhua2008 (bbhorse) ★☆☆☆☆ -
普通会员
2003/4/2 23:09:00
1楼: 好,这正是我想要找的东西!谢谢了!
----------------------------------------------
-
作者:
男 merlinfang (merlinfang) ★☆☆☆☆ -
盒子活跃会员
2003/4/19 12:10:40
2楼: up
----------------------------------------------
欢迎进入mop.6to23.com
作者:
男 lzharbor (harbor) ★☆☆☆☆ -
盒子活跃会员
2003/8/11 11:15:09
4楼: 我也想问与3楼朋友一样的问题,如果用ADO则如何配置?
----------------------------------------------
-
作者:
男 over (over) ★☆☆☆☆ -
普通会员
2003/10/24 18:13:42
5楼: 对我这种菜鸟来说,我很谢谢!
请问BDE与ADO有什么区别??
按此在新窗口浏览图片 按此在新窗口浏览图片
----------------------------------------------
-
作者:
男 ripple (剑子) ★☆☆☆☆ -
盒子活跃会员
2003/10/28 11:20:49
6楼:  我想我应该顶一下吧,我觉得大多数人都有这方面的各种问题。
 我想知道4楼的答案。
 谢谢
----------------------------------------------
it's me
作者:
男 beauty1 (beauty1) ★☆☆☆☆ -
普通会员
2003/10/29 16:59:38
7楼: bde 和ado是两种连接数据库的方式
bde是delphi最常用的,ado是微软公司的
如果连接access和sql server建议用ado连接
毕竟一个公司的东西融合性更好一些
----------------------------------------------
李建明
作者:
男 mos (mos) ★☆☆☆☆ -
盒子活跃会员
2004/5/11 17:05:39
8楼: 同意7楼的看法!
----------------------------------------------
-
作者:
男 jianghezi (jianghezi) ★☆☆☆☆ -
普通会员
2004/8/27 11:36:31
9楼: 是不是在程序发布的时候,如果采用ADO,就只用配置WIN的ODBC就可以了,而不用将程序打包?
----------------------------------------------
-
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/7/12 23:53:31
11楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/7/12 23:56:56
12楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/7/13 0:00:25
13楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/8/9 22:46:24
14楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
作者:
男 jszhulei (lehao:)) ★☆☆☆☆ -
普通会员
2013/7/15 17:47:09
15楼: 利用 UDL 也可以实现
----------------------------------------------
乐观坚强,开心为尚,一切乐好:)同时恳请支持[南京东南长平http://www.njdncp.com]
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行105.4688毫秒 RSS