Delphi(dbExpress)可以在Schemas中使用SHOW TABLES吗?

时间:2013-09-13 15:55:07

标签: mysql sql delphi delphi-xe2 dbexpress

我尝试编写一个小型数据库管理应用程序来比较我们的实时和开发数据库模式

目前我可以使用单个TSQL连接来获取MySQL(5.0)服务器上的Schema列表,当我尝试直接访问模式时会出现问题。

我想选择一个模式,并在列表框中显示该模式中的所有表。

下面的过程会编译,但是当它遇到ExecSQL时,会出现“语法错误”消息。

procedure TDM.GetTables(schemaname: string);
begin
   with SQLQuery1 do
   begin
      SQL.Clear;
      SQL.Add('SHOW TABLES FROM ' + schemaname);
      ExecSQL;
   end;
end;

Schemaname 来自使用GET SCHEMAS播种的tcombobox,看起来正在通过OK。

我已经尝试使用Open而不是ExecSQL,并得到相同的错误。我还尝试在声明的末尾添加;

除非我失明,否则我想知道问题是否与dbExpress相关

有人知道吗?

2 个答案:

答案 0 :(得分:3)

必须有另一个原因,这不起作用 通常这应该有效;

 SQL.Add('SHOW TABLES FROM ' + schemaname);

相反,您可以尝试:

with SQLQuery1 do
   begin
      close;
      SQL.Clear;
      SQL.Add('SELECT table_name FROM INFORMATION_SCHEMA.TABLES'+
              ' WHERE table_schema = "'+schemaname+'"');
      Open;
   end;

答案 1 :(得分:0)

原来问题是with的嵌套和我选择的参数名称的组合。

TSQLQuery有一个名为schemaname属性,我认为编译器与我同名的参数混淆了。

调试器在检查器中正确报告参数值时没有抓住这个...