现在的位置: 首页 > 综合 > 正文

在Delphi中不设置BDE连接数据库(转)

2013年07月21日 ⁄ 综合 ⁄ 共 2343字 ⁄ 字号 评论关闭

三种方法: 

一是不使用通过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服务器没指定的数据库、用户名或口令错误。

抱歉!评论已关闭.