正如我的评论之一中提到的,问题是试图执行多个个人单个 TAdoQuery 组件中的 SQL 语句。
在理想的情况下,您将拥有一个诸如 MyDAC 之类的组件,它具有一个可以用来代替 TAdoQuery 的脚本组件(MyDAC 还会为您带来其他好处,例如不必通过 ODBC 连接)。我不知道是否有任何免费的 MySQL 组件具有脚本组件。
另一种方法是您可以创建一个脚本文件(例如createFakeSchema.sql)并通过命令行执行它。例如:
创建FakeSchema.sql:
CREATE SCHEMA IF NOT EXISTS fakeschema;
USE fakeschema;
CREATE TABLE table1
(IDtable1 int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
Line1 varchar(45),
Line2 varchar(45));
和示例源代码:
procedure TfrmMain.DoExecuteScriptFile;
var
cmd: string;
KeepOpen: Boolean;
begin
KeepOpen := True;
// option to automatically close window once execution is done
// for releasing you would not want it kept open, but handy for debugging
if KeepOpen then
cmd := '/k '
else
cmd := '/c ';
cmd := cmd + Format(' mysql -uroot -proot -D%s < "%s"', ['FakeSchema', 'createFakeSchema.sql']);
ShellExecute(handle,'open', 'cmd.exe', Pchar(cmd), nil, SW_SHOW );
end;
这样你就可以在外部某个地方创建你的脚本文件,然后通过 MySQL 自己测试它,然后当你知道你的script正在工作,您可以通过您的程序运行它。如果要在执行时隐藏命令窗口,请将 ShellExecute 中的 SW_SHOW 更改为 SW_HIDE。这样,您甚至根本不需要任何组件 - 只需在路径中访问 mysql.exe 或在 cmd 语句中包含完整路径即可。
这是在 MySQL 5.1 中完成的,所以希望适用于 3.5...