请教关于数据库的动态连接问题

MOZ 2000-03-13 09:19:00
1。如果我想在运行程序时动态创建某一个类的唯一对象(也就是说,如果
该对象已存在,就不创建;如果该对象不存在,就创建),如何判断该对象
是否已存在?
2。我有多个数据库,如何通过程序来动态的建立程序与某一数据库
的连接(事先不在BDE里设置)?请指教!
...全文
159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rich_Zhou 2000-03-17
  • 打赏
  • 举报
回复
TTable的dataBaseName支持文件路径
动态的设置TTable的DataBaseName和TableName属性可以访问任何已知位置的数据库文件
tblTemp.DatabaseName:=ExtractFileDir(Application.ExeName);
tblTemp.TableName :='temp.db';
tblTemp.Open;
即可
dengdeng 2000-03-16
  • 打赏
  • 举报
回复
问题一:
对使用的对象变量进行检查.判断变量是不是nil.
首先在程序初始化时将变量赋值为nil.然后再创建对象.
释放变量后将变量赋值为nil.

if MyThread <> nil then
MyThread := TMyThread.Create(False);

用Assigned()来判断行不通.

问题二:

使用TDataBase.在程序中动态的对其Params参数赋值.数据库名称可以设置
DataBaseName参数.

with Database1 do
begin
Close;
Params.Clear;
params.Add('DataBase Name=dbn');
Params.Add('Server Name=svr');
Params.Add('User Name=usr');
Params.Add('Password=pwd');
connected := true;
end;
jwchc 2000-03-14
  • 打赏
  • 举报
回复
database1.Close;
database1.Params.Values['DATABASE NAME']:= ExtractFilePath(Application.ExeName)+'address.mdb';
table1.Active :=true;
zsr 2000-03-14
  • 打赏
  • 举报
回复
关于第一个问题,可判断所使用的对象的值,如果已存在则变量不是NIL,否则可创建该对象。在FREE以后,也要把变量赋为NIL。

关于第二个问题,可使用TDataBase构件解决,在它的Connected设为true之前设置其Params参数,然后连接即可,也就是动态创建别名.
举个例子:
with Database1 do
begin
params.values['databasename']:='sss';
params.values['path']:='c:\test';
....
connected:= true;
end;
AcherMagic 2000-03-13
  • 打赏
  • 举报
回复
1. 可以用 Assigned()来判断是否存在这个变量
2 用TDatabase
在程序中给TDatabase的params赋值

929 2000-03-13
  • 打赏
  • 举报
回复
我想对于问题一,可对所使用的对象变量进行测试,如果已存在,则此变量一定不是NIL,否则需要创建对象。这里需要注意,初始化时变量应赋为NIL,在FREE以后,也要把变量赋为NIL。否则判断会出错。
动态加入连接可用ADDALIAS来完成。可在DELPHI中找TSESSION说明。
下面是摘自DELPHI中的例子。
var

MyList: TStringList;
begin
MyList := TStringList.Create;
try
with MyList do
begin
Add('SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB');
Add('USER NAME=MYNAME');
end;
Session1.AddAlias('NewIBAlias', 'INTRBASE', MyList);
finally
MyList.Free;
end;
end;

2,495

社区成员

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

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