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

Soc 2000-01-14 05:20:00
客户端如果想改变连接的远程数据库服务器,该怎么办?
比如想在“选项”里设置一个服务器。因为我知道的方法都是
改变BDE别名,是不是一定要调用BDE的API?
因为我是新手,麻烦能不能说详细点?谢谢
...全文
259 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别名
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。 PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。 事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类的支持,其中有些数据类可以说连商业数据库都不具备, 比如 IP 类和几何类等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。 本课程作为PostgreSQL数据库管理一,主要讲解以下内容:1.     PostgreSQL安装和环境准备2.     PostgreSQL数据查询3.     PostgreSQL 数据过滤4.     PostgreSQL 多表的联接5.     PostgreSQL数据的分组6.     PostgreSQL合集的操作7.   PostgreSQL 合集的分组

2,497

社区成员

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

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