[英]Why does This SQL query give a syntax error
我有以下在单击按钮(button1)时执行的过程。 在提示您登录数据库后,delphi引发以下错误:
您的SQL语法有误; 查看与您的MySQL服务器版本相对应的手册,以获取在“ AlphaMc”附近使用的正确语法
从第1行的'AlphaMc111'选择*。 进程已停止。 使用“步骤”或“运行”继续。
步骤如下:
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;
不要使用引号对列或表名进行转义。 使用反引号
ADOQuery1.SQL.Add('SELECT * FROM `AlphaMc111`');
引号是字符串定界符。
我认为问题在于查询本身。
AlphaMc111
不需要引用,因为它是一个表名
只有SQL语法中的Textinput才需要带引号的字符串。
尝试
ADOQuery1.SQL.Add('SELECT * FROM AlphaMc111'));
MySql 标识符引用字符是反引号,请尝试
ADOQuery1.SQL.Add('SELECT * FROM `AlphaMc111`');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.