为什么此 SQL 查询会出现语法错误
Why does This SQL query give a syntax error
我有以下程序,它是在单击按钮 (button1) 时执行的。在提示登录数据库后,delphi 抛出以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''AlphaMc'
SELECT * FROM 'AlphaMc111'' at line 1'. Process Stopped. Use Step or Run to continue.
程序如下:
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;
不要使用引号转义列或 table 名称。使用反引号
ADOQuery1.SQL.Add('SELECT * FROM `AlphaMc111`');
引号是字符串分隔符。
我认为问题出在查询本身。
AlphaMc111
不需要引用,因为它是一个表名
只有 SQL 语法中的文本输入才需要带引号的字符串。
尝试
ADOQuery1.SQL.Add('SELECT * FROM AlphaMc111'));
MySql identifier引号字符是反引号,试试
ADOQuery1.SQL.Add('SELECT * FROM `AlphaMc111`');
我有以下程序,它是在单击按钮 (button1) 时执行的。在提示登录数据库后,delphi 抛出以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''AlphaMc'
SELECT * FROM 'AlphaMc111'' at line 1'. Process Stopped. Use Step or Run to continue.
程序如下:
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;
不要使用引号转义列或 table 名称。使用反引号
ADOQuery1.SQL.Add('SELECT * FROM `AlphaMc111`');
引号是字符串分隔符。
我认为问题出在查询本身。
AlphaMc111
不需要引用,因为它是一个表名
只有 SQL 语法中的文本输入才需要带引号的字符串。
尝试
ADOQuery1.SQL.Add('SELECT * FROM AlphaMc111'));
MySql identifier引号字符是反引号,试试
ADOQuery1.SQL.Add('SELECT * FROM `AlphaMc111`');