qryreg.SQL.Add('Insert into RegistreerTB');
qryreg.SQL.add('Name , Surname, E-mail, Password)');
qryreg.SQL.Add('Values ('+quotedstr(edtname.Text)+','+quotedstr(edtsname.Text)+','+quotedstr(edtemail.Text)+','+quotedstr(edtpassuse.Text)+')');
qryreg.ExecSQL ;
qryreg.SQL.Text := 'Select * from RegistreerTB';
qryreg.Open ;
Run Code Online (Sandbox Code Playgroud)
这是使用atm与delphi的代码我试图从编辑框将数据保存到我的数据库.我得到的错误是EOELeException"插入语句"
ty提前
正如oodesigner所说,更好的方法是使用参数.我不知道你正在看什么教科书,但给出的代码并不是最好的做法(这也不是最差的做法,至少它使用QuotedStr而不是'''' + edtname.Text + ''''第一次使用像O'Connell这样的东西时失败了,并允许SQL注入攻击.
根据Rob的answe使用参数并假设SQL Server语法,并假设TADOQuery(基于EOLEException)代码将类似于:
qryreg.SQL.Add('Insert into RegistreerTB');
qryreg.SQL.Add('(Name , Surname, [E-mail], Password)'); //SQL Server syntax with square brackets
// OR qryreg.SQL.Add('(Name , Surname, "E-mail", Password)'); //Oracle/Postgres syntax with double quotes
// OR qryreg.SQL.Add('(Name , Surname, `E-mail`, Password)'); //MySQL syntax with grave accent
qryreg.SQL.Add('Values :Name, :Surname, :Email, :Password)');
qryreg.Parameters.ParamByName('Name').Value := edtName.Text;
qryreg.Parameters.ParamByName('Surname').Value := edtSName.Text;
qryreg.Parameters.ParamByName('Email').Value := edtEmail.Text;
qryreg.Parameters.ParamByName('Password').Value := edtPassUse.Text;
qryreg.ExecSQL;
qryreg.SQL.Text := 'Select * from RegistreerTB';
qryreg.Open ;
Run Code Online (Sandbox Code Playgroud)