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'附近使用正确的语法
如何使用参数使用上面的插入查询?
ExecDirect表示在执行之前不需要准备查询.如果查询不包含任何参数,则此参数可以设置为true.
所以,如果代码使用
SQLQuery2.ExecSQL(true);
Run Code Online (Sandbox Code Playgroud)
这意味着不会支持参数.
但因为你使用参数,只需使用
SQLQuery2.ExecSQL;
Run Code Online (Sandbox Code Playgroud)
并删除参数周围的引号.
删除引号:
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)
找到答案了!
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)
谢谢你们 !!