如何知道表在access数据库中(100分)

  • 主题发起人 主题发起人 吉花
  • 开始时间 开始时间

吉花

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是access97做的数据库,叫perdb.mdb
我在delphi5中需要完成以下功能:
在数据库中查找是否有一个叫f.db的表,
如果有将它显示出来;
如果没有,则提出警告。
问题是我怎么知道f.db在不在perdb.mdb中呢?
以前我用paradox的时候,可以在硬盘中找f.db
这个文件,可是现在呢?
 
query1.close;
query1.add('select 1 from tablename');
try
query1.open;
except
showmessage('table not found');
exit;
end;

另外, 表名中最好不要带 .
 
有没有更好的方法?
没有我就给Iknow加分了
 
用TSession.GetTableNames得到所有表名TableLists,
if TableLists.IndexOf(TableName) <> 0 then Exsits
else not Exsits
 
同意xWolf的方法。
用query1.open并不确切,打开失败的原因很多。
 
用TSession或TADOConnection就可以了。
MyStringList := TStringList.Create;
try
Session.GetTableNames('DBDEMOS', '*.db',False, False, MyStringList);
{ Add the table names to a list box }
ListBox1.Items = MyStringList;
finally
MyStringList.Free;
end;
 
太简单了,用table控件,先指定table 的databasename为你要访问的数据库名,在指定tablename为你要访问的表名,然后访问table的Exists属性,若该属性为真,则该表存在,否则该表不存在.注: 该属性返回布尔型值.
OK!
 
用TSession可解决,检测数据库别名:
Session.GetAliasNames(list:Tstrings);
list.IndexOf(' 需 要 检 测 的 别 名');
成功后检测表:
Session.GetTableNames(const DatabaseName,
Pattern: string; Extensions,SystemTables: Boolean;List:TStrings);
list.IndexOf(' 需 要 检 测 的 表 名');
如检测表:
yourlist:TStringList;
answer:Integer;

yourlist:=TStringlist.Create;
Session.GetTableNames
('youralias','',False,False,yourlist);
if (yourlist.IndexOf('f')=-1) then {判断表格是否存在}
answer:=Application.MessageBox(
'别名youralias中不存在
表格f',mb_OKCancel);
 
多人接受答案了。
 
后退
顶部