1

我在帮一个朋友帮忙,他的常规程序员病假了,他给了我一份临时工作。

我正在尝试使用 RAD Studio XE7 Delphi 和 MyDac 为他创建一个数据库。我退休了,自从我使用 Delphi 和那是 XE3 以来已经有一段时间了。我可以创建数据库没问题,但我的表有问题。它告诉我在执行之前的最后一行有语法错误。我无法显示他想要的实际字段,但我在几年前创建了一个表,还为我的妻子使用了一个非常旧版本的 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岁了,灰色的细胞已经不是以前的样子了!

任何人都可以帮我一把吗?

4

1 回答 1

0

这应该有效:

   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)';
于 2021-04-07T06:58:11.667 回答