【问题标题】:Why does This SQL query give a syntax error为什么此 SQL 查询会给出语法错误
【发布时间】:2015-02-05 10:26:22
【问题描述】:

我有以下在单击按钮 (button1) 时执行的过程。 delphi在提示登录数据库后,抛出如下错误:

您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在 ''AlphaMc' 附近使用的正确语法

在第 1 行选择 * FROM 'AlphaMc111''。进程停止。使用 Step 或 Run 继续。

程序如下:

procedure TMainWin.Button1Click(Sender: TObject);
begin
  ADOConnection1.ConnectionString := 'Driver={MySQL ODBC 3.51 Driver};
  Server=db4free.net;Port=3306;Database=inventmanager;User=******;
  Password=******;Option=3;';

  ADOConnection1.Connected := True;
  ADOQuery1.Connection := ADOConnection1;

  ADOQuery1.SQL.Add('SELECT * FROM ''AlphaMc111''');
  ADOQuery1.Open;
end;

【问题讨论】:

    标签: mysql sql delphi delphi-7


    【解决方案1】:

    不要使用引号来转义列名或表名。使用反引号

    ADOQuery1.SQL.Add('SELECT * FROM `AlphaMc111`');
    

    引号是字符串分隔符。

    【讨论】:

      【解决方案2】:

      我认为问题在于查询本身。

      AlphaMc111 不需要引用,因为它是一个表名

      只有 SQL 语法中的 Textinput 需要带引号的字符串。

      试试

      ADOQuery1.SQL.Add('SELECT * FROM AlphaMc111'));
      

      【讨论】:

        【解决方案3】:

        MySql identifier 引号字符是反引号,试试

        ADOQuery1.SQL.Add('SELECT * FROM `AlphaMc111`');
        

        【讨论】:

          猜你喜欢
          • 2016-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-26
          • 1970-01-01
          • 2019-09-13
          • 1970-01-01
          相关资源
          最近更新 更多