使用 Delphi XE7 和 MyDac 在运行时创建 MySQL Table 时出现问题
Problem creating MySQL Table at runtime with Delphi XE7 and MyDac
我正在帮一个朋友的忙,他的固定程序员请病假,他给了我一份临时工作。
我正在尝试使用 RAD Studio XE7 Delphi 和 MyDac 为他创建一个数据库。我退休了,自从我使用 Delphi 以来已经有一段时间了,那是 XE3。我可以毫无问题地创建数据库,但 table 有问题。它告诉我在执行之前的最后一行有语法错误。我无法显示他想要的实际字段,但我在 table 年前为我妻子创建了一个非常旧版本的 MyDac。我尝试使用我的旧代码,得到了相同的结果。
这是代码:
Form1.MyCommand1 := TMyCommand.Create(nil);
try
Form1.MyCommand1.Connection := Form1.MyConnection1;
Form1.MyCommand1.SQL.Add('CREATE TABLE films (');
Form1.MyCommand1.SQL.Add(' series varchar(25) default NULL, ');
Form1.MyCommand1.SQL.Add(' id int(11) default NULL, ');
Form1.MyCommand1.SQL.Add(' dvd_no int(11) default NULL, ');
Form1.MyCommand1.SQL.Add(' title varchar(40) default NULL, ');
Form1.MyCommand1.SQL.Add(' actor1 varchar(30) default NULL, ');
Form1.MyCommand1.SQL.Add(' actor2 varchar(30) default NULL, ');
Form1.MyCommand1.SQL.Add(' director varchar(40) default NULL, ');
Form1.MyCommand1.SQL.Add(' writer varchar(40) default NULL, ');
Form1.MyCommand1.SQL.Add(' season varchar(30) default NULL, ');
Form1.MyCommand1.SQL.Add(' episodes varchar(30) default NULL, ');
Form1.MyCommand1.SQL.Add(' year varchar(4) default NULL, ');
Form1.MyCommand1.SQL.Add(' genre varchar(30) default NULL, ');
Form1.MyCommand1.SQL.Add(' rating varchar(15) default NULL, ');
Form1.MyCommand1.SQL.Add(' comment longtext default NULL, ');
Form1.MyCommand1.SQL.Add(' seen char(1) default NULL, ');
Form1.MyCommand1.SQL.Add(' multisession char(1) default NULL, ');
Form1.MyCommand1.SQL.Add(');');
Form1.MyCommand1.Execute;
finally
Form1.MyCommand1.Free;
end;
老实说,我忘记了“Form1.MyCommand1.SQL.Add(');'”这行实际上是干什么用的。我试过无数次修改它,但没有成功。
我显然在这里做错了什么,但正如我所说,已经很长时间了,在 80 岁时,灰色细胞不再像以前那样!
谁能帮帮我?
这应该有效:
Form1.MyCommand1 := TMyCommand.Create(nil);
try
Form1.MyCommand1.Connection := Form1.MyConnection1;
Form1.MyCommand1.SQL.Add('CREATE TABLE films (' +
' series varchar(25) default NULL, ' +
' id int(11) default NULL, ' +
' dvd_no int(11) default NULL, ' +
' title varchar(40) default NULL, ' +
' actor1 varchar(30) default NULL, ' +
' actor2 varchar(30) default NULL, ' +
' director varchar(40) default NULL, ' +
' writer varchar(40) default NULL, ' +
' season varchar(30) default NULL, ' +
' episodes varchar(30) default NULL, ' +
' year varchar(4) default NULL, ' +
' genre varchar(30) default NULL, ' +
' rating varchar(15) default NULL, ' +
' comment longtext default NULL, ' +
' seen char(1) default NULL, ' +
' multisession char(1) default NULL);';
Form1.MyCommand1.Execute;
finally
Form1.MyCommand1.Free;
end;
我不是 100% 确定最后一个分号。如果仍然出错,试试这个:
' multisession char(1) default NULL)';
我正在帮一个朋友的忙,他的固定程序员请病假,他给了我一份临时工作。
我正在尝试使用 RAD Studio XE7 Delphi 和 MyDac 为他创建一个数据库。我退休了,自从我使用 Delphi 以来已经有一段时间了,那是 XE3。我可以毫无问题地创建数据库,但 table 有问题。它告诉我在执行之前的最后一行有语法错误。我无法显示他想要的实际字段,但我在 table 年前为我妻子创建了一个非常旧版本的 MyDac。我尝试使用我的旧代码,得到了相同的结果。
这是代码:
Form1.MyCommand1 := TMyCommand.Create(nil);
try
Form1.MyCommand1.Connection := Form1.MyConnection1;
Form1.MyCommand1.SQL.Add('CREATE TABLE films (');
Form1.MyCommand1.SQL.Add(' series varchar(25) default NULL, ');
Form1.MyCommand1.SQL.Add(' id int(11) default NULL, ');
Form1.MyCommand1.SQL.Add(' dvd_no int(11) default NULL, ');
Form1.MyCommand1.SQL.Add(' title varchar(40) default NULL, ');
Form1.MyCommand1.SQL.Add(' actor1 varchar(30) default NULL, ');
Form1.MyCommand1.SQL.Add(' actor2 varchar(30) default NULL, ');
Form1.MyCommand1.SQL.Add(' director varchar(40) default NULL, ');
Form1.MyCommand1.SQL.Add(' writer varchar(40) default NULL, ');
Form1.MyCommand1.SQL.Add(' season varchar(30) default NULL, ');
Form1.MyCommand1.SQL.Add(' episodes varchar(30) default NULL, ');
Form1.MyCommand1.SQL.Add(' year varchar(4) default NULL, ');
Form1.MyCommand1.SQL.Add(' genre varchar(30) default NULL, ');
Form1.MyCommand1.SQL.Add(' rating varchar(15) default NULL, ');
Form1.MyCommand1.SQL.Add(' comment longtext default NULL, ');
Form1.MyCommand1.SQL.Add(' seen char(1) default NULL, ');
Form1.MyCommand1.SQL.Add(' multisession char(1) default NULL, ');
Form1.MyCommand1.SQL.Add(');');
Form1.MyCommand1.Execute;
finally
Form1.MyCommand1.Free;
end;
老实说,我忘记了“Form1.MyCommand1.SQL.Add(');'”这行实际上是干什么用的。我试过无数次修改它,但没有成功。
我显然在这里做错了什么,但正如我所说,已经很长时间了,在 80 岁时,灰色细胞不再像以前那样!
谁能帮帮我?
这应该有效:
Form1.MyCommand1 := TMyCommand.Create(nil);
try
Form1.MyCommand1.Connection := Form1.MyConnection1;
Form1.MyCommand1.SQL.Add('CREATE TABLE films (' +
' series varchar(25) default NULL, ' +
' id int(11) default NULL, ' +
' dvd_no int(11) default NULL, ' +
' title varchar(40) default NULL, ' +
' actor1 varchar(30) default NULL, ' +
' actor2 varchar(30) default NULL, ' +
' director varchar(40) default NULL, ' +
' writer varchar(40) default NULL, ' +
' season varchar(30) default NULL, ' +
' episodes varchar(30) default NULL, ' +
' year varchar(4) default NULL, ' +
' genre varchar(30) default NULL, ' +
' rating varchar(15) default NULL, ' +
' comment longtext default NULL, ' +
' seen char(1) default NULL, ' +
' multisession char(1) default NULL);';
Form1.MyCommand1.Execute;
finally
Form1.MyCommand1.Free;
end;
我不是 100% 确定最后一个分号。如果仍然出错,试试这个:
' multisession char(1) default NULL)';