关于C/S型数据库的初级问题

Soc 2000-01-14 05:20:00
客户端如果想改变连接的远程数据库服务器,该怎么办?
比如想在“选项”里设置一个服务器。因为我知道的方法都是
改变BDE别名,是不是一定要调用BDE的API?
因为我是新手,麻烦能不能说详细点?谢谢
...全文
263 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
april_d 2001-08-13
  • 打赏
  • 举报
回复
gz
渤海海峡 2000-01-15
  • 打赏
  • 举报
回复
这是一个设置别名的函数(用于interbase,可以轻易的改为通用的)

function setdbalias(const aliasname, servername:string):boolean;
var
paramlist:tstringlist;
begin
result:=true;
paramlist:=tstringlist.Create;
try
paramlist.Clear;
paramlist.Add('SERVER NAME='+servername);
paramlist.add('USER NAME=SYSDBA');
paramlist.add('PASSWORD=masterkey');
if session.IsAlias(aliasname) then
begin
session.ModifyAlias(aliasname,paramlist);
end else
begin
session.AddAlias(aliasname,'intrbase',paramlist);
end;
session.SaveConfigFile;
except
result:=false;
end;
paramlist.free;
end;

然后再使用tdatabase 就可以了。
渤海海峡 2000-01-15
  • 打赏
  • 举报
回复
同意 darkness 的意见 使用tdatabase 足以。
如果还要对别名作一些处理,在加上 tsession .
Soc 2000-01-15
  • 打赏
  • 举报
回复
糟糕,给错分了,Darkness,我马上还有一个相关问题,一定补给你
darkness 2000-01-14
  • 打赏
  • 举报
回复
I do not know what database Server u use.But I uses the oracle database,
I can satisfy your demand.Only use Tdatabase componet.
var UserName,Password,ServerName;string;
Database:Tdatabase;

Database:=TDatabase.Create(Application);
Database.DatabaseName;='Test';
Database.DriverName:='ORACLE';
DataBase.LoginPrompt:=False;
Database.Params.Values['SERVER NAME']:='@'+ServerName;
DataBase.Params.Values['USER NAME']:=UserName;
DataBase.Params.Values['PASSWORD']:=PassWord;
//the following is oracle default setup,you can put a Tdatabase on the
//form,double click it,then see the driver name drop-down,select the
//"oracle",click Default button,You can see all,the only change is the
//above three variale and driver name
try
Database.open;
except
Database.close;
ShowMessage('Not connect to database');
end;
//later,all operations to the remote database only to set
//the DatabaseName of TQuery as Database.DatabaseName
delphi_fan 2000-01-14
  • 打赏
  • 举报
回复
这样对于MS SQL7和Foxpro都行,但连Access 97生成的数据库有点问题,
因为BDE带的Access的接口不能打开Access 97数据库,而必须用ODBC的驱动,请为怎么在
程序里实现数据库的自动配置。
LaoZheng 2000-01-14
  • 打赏
  • 举报
回复
在应用程序目录下建 *.ini文件 如下:
[LJGLXT]
WINNT=ZHENG
DATABASE=LJGLXT
USER=sa
PASS=

应用程序开始时运行 如下程序:


uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables,IniFiles, ImgList,stdctrls;

type
TD = class(TDataModule)
Database: TDatabase;
Query: TQuery;
MailQuery: TQuery;
procedure DCreate(Sender: TObject);
procedure DDestroy(Sender: TObject);
private
{ Private declarations }
public
AppPath:String;
{ Public declarations }
end;

var
D: TD;

implementation

{$R *.DFM}

procedure TD.DCreate(Sender: TObject);
var
WINNT,USER,PASS,PATH:STRING[80];
xtconfig:TiniFile;
UseWhichData:integer;
Buffer:Array[0..128] of Char;
YY,MM,DD:WORD;
begin
if GetWindowsDirectory(Buffer,128)>0 then
WinPath:=StrPas(Buffer)
else WinPath:='';
AppPath:=ExtractFilePath(ParamStr(0));
try
xtconfig:=TiniFile.create(AppPath+'LJGLXT.INI');
WINNT:=xtconfig.readString('LJGLXT','WINNT','WINNT');
USER:=xtconfig.readString('LJGLXT','USER','sa');
PASS:=xtconfig.readString('LJGLXT','PASS','');
finally
xtconfig.free;
end;
DataBase.Close;
DataBase.Params.clear;
DataBase.Params.add('DATABASE NAME=LJGLXT');
DataBase.Params.add('SERVER NAME='+WINNT);
DataBase.Params.add('USER NAME='+USER);
DataBase.Params.add('OPEN MODE=READ/WRITE');
DataBase.Params.add('SCHEMA CACHE SIZE=8');
DataBase.Params.add('BLOB EDIT LOGGING=');
DataBase.Params.add('LANGDRIVER=');
DataBase.Params.add('SQLQRYMODE=');
DataBase.Params.add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
DataBase.Params.add('DATE MODE=0');
DataBase.Params.add('SCHEMA CACHE TIME=-1');
DataBase.Params.add('MAX QUERY TIME=300');
DataBase.Params.add('MAX ROWS=-1');
DataBase.Params.add('BATCH COUNT=200');
DataBase.Params.add('ENABLE SCHEMA CACHE=FALSE');
DataBase.Params.add('SCHEMA CACHE DIR=');
DataBase.Params.add('HOST NAME=');
DataBase.Params.add('APPLICATION NAME=');
DataBase.Params.add('NATIONAL LANG NAME=');
DataBase.Params.add('ENABLE BCD=FALSE');
DataBase.Params.add('TDS PACKET SIZE=4096');
DataBase.Params.add('BLOBS TO CACHE=64');
DataBase.Params.add('BLOB SIZE=32');
DataBase.Params.add('PASSWORD='+PASS);
DataBase.open;

end;

procedure TD.DDestroy(Sender: TObject);
begin
DataBase.Close;
end;


程序中不须要 BDE别名

2,498

社区成员

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

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