引言 Delphi7 具有强大的数据库应用程序开发功能 在使用 Delphi7 开发 房产管理系统 时,后台数据库采用 SQL Server 数据库管理系统 使用 TADOConnection 组件与数据库 建立连接,需要指定 TADOConnection 组件的 connectstring 属 性,在属性设置时需要用到数据库服务器的名称 因为 SQL Server 数据库不是一个独立的磁盘文件,它是通过数据库服务 器的名称来访问数据库中的数据的 而在不同的计算机上安 装 SQLServer 数据库管理系统时,都为数据库服务器指定了 不同的实例名称,所以在 connectstring 属性中必须指定正确的 服务器名字才可以实现正确的连接 2 实现思路 正是利用 Delphi 可以很方便地读取 INI 配置文件的内在 优点,在 房产管理系统 中将需要连接的 SQLServer 数据 库服务器的名称事先写入到一个INI 配置文件中,连接时再从 INI 配置文件中读出相关的数据构成连接字符串信息 应用程 序运行前先进行数据库连接测试,如果连接成功,则直接运 行下一步,如果连接失败,则自动弹出提示窗口,提示用户 录入数据库连接配置的正确信息,保存后再进行连接测试, 直至成功直接进入系统 3 关键技术 3.1 将数据库连接参数写入配置文件 首先建立一个用于输入数据的窗体,如图1所示 在其单元文件中,定义常量 strINIname 来存放配置文件 名,定义 TINIFile 类型的文件变量iniParam; const strINIname='db.ini'; var iniParam:TINIFile; 接着定义将数据库连接参数写入配置文件的过程writeParam: procedurewriteParam(server:string;workstation:string); begin iniParam.WriteString('dbParam','DataSource',server); iniParam.WriteString('dbParam','WorkstationID', workstation); end; 然后编写窗体 保存 按钮的事件过程程序 procedureTform1.Button1Click(Sender:TObject); var server,workstation:string; begin server:=trim(Edit1.Text); workstation:=trim(Edit2.Text); writeParam(server,workstation); MessageDlg(' 保存成功',mtinformation,[mbok],0); Button2.SetFocus; end; ![]() 3.2 登录时读取配置文件内容连接数据库 主程序运行时,在登录窗口中先进行用户的合法性验证 再进行数据库连接测试,登录窗体的单元文件 Login.pas 部分 代码如下: unitLogin; interface uses Windows,Messages,SysUtils,Classes,Graphics,Controls, Forms,Dialogs,ExtCtrls,StdCtrls,Buttons,DB,DBTables, AdoDB,inifiles; type TLoginform=class(TForm) Panel1:TPanel; edtPassword:TEdit; StaticText1:TStaticText; StaticText2:TStaticText; cmbUserName:TComboBox; btnOK:TSpeedButton; btnCancel:TSpeedButton; BitBtn1:TBitBtn; ADOQuery1:TADOQuery; procedurebtnCancelClick(Sender:TObject); procedureFormShow(Sender:TObject); procedureFormCreate(Sender:TObject); procedurebtnOKClick(Sender:TObject); procedureedtPasswordKeyDown(Sender:TObject;var Key:Word;Shift:TShiftState); procedureBitBtn1Click(Sender:TObject); private {Privatedeclarations} public {Publicdeclarations} end; const strINIname='db.ini'; var Loginform:TLoginform; iniParam:TINIFile; procedurereadParam(outserver:String;outworkstation: string); implementation usesMain,datamodule; {$R*.DFM} //定义一个读取参数的过程readParam procedurereadParam(outserver:String;outworkstation: string); begin server:=iniparam.ReadString('dbParam','DataSource', ''); workstation:=iniParam.ReadString('dbParam', 'WorkstationID',''); end; //在登录窗体的 oncreate 事件中连接数据库 procedureTLoginform.FormCreate(Sender:TObject); var Query:TADOQuery; a,b,c,d,e:string; begin //获取配置文件 getdir(0,d); iniparam:=tinifile.Create(d+'\'+strininame); //从配置文件中读取参数值 readparam(a,b); datamodule2.adoconnection1.Connected:=false; //根据读出的参数构造连接字符串的值,并连接数据库 c:='Provider=SQLOLEDB.1;Password='+''''';PersistSecu rityInfo=True;UserID=sa;InitialCatalog=FangChan;Data Source='; d:=';UseProcedureforPrepare=1;AutoTranslate=True; |