关于数据库检索的问题,请指教!(100分)

  • 主题发起人 主题发起人 慕容枫
  • 开始时间 开始时间

慕容枫

Unregistered / Unconfirmed
GUEST, unregistred user!
我尝试使用Session.FindDatabase函数对数据库是否存在进行测试,但判断结果无法得到证实,下面是部分源程序,请教各位如何改进或其它的好办法!

procedure TForm1.Button1Click(Sender: TObject);
var
DB : TDatabase;
begin
DB := Session.FindDatabase('DBDEMOS');
if (DB = nil) then
DB := Session.Opendatabase('DBDEMOS');
ShowMessage('该数据库存在');
DB.Free;
end;

 
如果是文件型数据库,直接用判断目录是否存在,文件是否存在(ACCESS)
DirectoryExists()
再得到TableNames,判断数据表是否存在。
Database1.GetTableNames();
 
我的目的是这样的:
在程序第一次运行时,查找该数据库是否存在—否—>创建该数据库、别名及其路径。

在这里我使用了Session组件,但它的FindDatabase方法不能准确的判断所输入的数据库别名是否存在(如DBDEMOS),这为程序的移植带来的很大的困难.
您所说的方法我不太明白,能否给一个完整的源程序让我学习一下?
注:我使用Paradox7数据库

谢谢您的回复!

 
你可以用TSession的GetAliasName取得所有的别名,然后在所得到的列表中
判断你的数据库是否存在(AliasName存在不一定数据库就存在,Alias目录也有可能不存在)
最好再用Session.GetTableNames取得表名的列表进行判断
如果不存在就创建:Session是一个全局变量,在应用程序运行时,它自动地建立
不需要使用面板上的TSession组件
procedure SetAlias; { 设置当前数据的别名(PARADOX) }
var
MyList: TStringList;
begin
MyList := TStringList.Create;
try
with MyList do
begin
Add('PATH=你的数据库的路径');
Add('ENABLE BCD=FALSE');
end;
Session.AddAlias('你的数据库别名', 'PARADOX', MyList);
finally
MyList.Free;
end;
end; { SetAlias }
===========================================================
如果用Database不使用别名,可以用判断Database参数PATH的值,检测
目录是否存在,再用Session.GetTableNames取得表名的列表,看表是否齐全
 
后退
顶部