如何使用参数插入查询?

Raf*_*ari 3 sql delphi delphi-2010

当我尝试这个查询时,我得到一个错误,说Perameter电子邮件不存在,我确信变量:email,login_pass,payment_method,operateur是有效的并且存在.

SQLQuery2.sql.Text := 'INSERT INTO registered (email,login_pass,payment_method,operateur) VALUES (":email",":login_pass",":payment_method",":avecpuce")';
SQLQuery2.ParamByName('email').AsString := email;
SQLQuery2.ParamByName('login_pass').AsString := login_pass;
SQLQuery2.ParamByName('payment_method').AsString := payment_method;
SQLQuery2.ParamByName('avecpuce').AsString := avecpuce;
SQLQuery2.ExecSQL(true);
Run Code Online (Sandbox Code Playgroud)

我尝试删除报价,但我明白了

您的Sql语法有错误,请检查与您的SQL服务器对应的手册,以便在第1行':email,:login_pass,:payment_method,:avecpuce'附近使用正确的语法

如何使用参数使用上面的插入查询?

mjn*_*mjn 7

TSQLQuery.ExecSQL文档:

ExecDirect表示在执行之前不需要准备查询.如果查询不包含任何参数,则此参数可以设置为true.

所以,如果代码使用

SQLQuery2.ExecSQL(true);
Run Code Online (Sandbox Code Playgroud)

这意味着不会支持参数.

但因为你使用参数,只需使用

SQLQuery2.ExecSQL;
Run Code Online (Sandbox Code Playgroud)

并删除参数周围的引号.


klu*_*udg 5

删除引号:

SQLQuery2.sql.Text := 'INSERT INTO registered (email,login_pass,payment_method,operateur)
   VALUES (:email, :login_pass, :payment_method, :avecpuce)';
Run Code Online (Sandbox Code Playgroud)


Raf*_*ari 4

找到答案了!

MySQLQuery2.SQL.Clear;
MySQLQuery2.SQL.Add('INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION)');
MySQLQuery2.SQL.Add('VALUES (:Name, :Capital, :Population)');
MySQLQuery2.Params[0].AsString := 'Lichtenstein';
MySQLQuery2.Params[1].AsString := 'Vaduz';
MySQLQuery2.Params[2].AsInteger := 420000;
MySQLQuery2.ExecSQL;
Run Code Online (Sandbox Code Playgroud)

谢谢你们 !!

  • 你的答案就是我的答案:)很高兴我能提供帮助 (4认同)