我尝试编写一个小型数据库管理应用程序来比较我们的实时和开发数据库模式
目前我可以使用单个 TSQL 连接获取 MySQL (5.0) 服务器上的模式列表,当我尝试直接访问模式时出现问题。
我想选择一个模式并在列表框中显示该模式中的所有表。
下面的过程可以编译,但是当它到达 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,看起来可以顺利通过。
我已经用 Open 而不是 ExecSQL 尝试了上面的操作,但得到了同样的错误。我还尝试将 ;
附加到语句的末尾。
除非我是瞎子,否则我想知道问题是否出在 dbExpress 上
有人知道吗?
最佳答案
一定有另一个原因导致它不起作用。
通常这应该有效;
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;
关于mysql - Delphi (dbExpress) 可以跨模式使用 SHOW TABLES 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790528/