【发布时间】:2016-11-22 01:57:25
【问题描述】:
我有以下几点:
somequery.SQL.Add('UPDATE `someDBname`.`someTABLEname` SET
`client`='''+someForm.Edit1.Text+''',
`phone`='''+someForm.Edit2.Text+''',
`email`='''+someForm.Edit3.Text+''',
`details`='''+someForm.Edit4.Text+''',
`specials`='''+someForm.Edit5.Text+''',
`price`='''+someForm.Edit6.Text+''',
`address`='''+someForm.Edit7.Text+''',
`deadline`='''+someForm.DateTimePicker1.DateTime+''',
`status`='''+someForm.Edit9.Text+'''
WHERE `id`=''' + inttostr(someDataSetid.Value) + ''';');
我想改用parameters,像这样:
someQuery.SQL.Clear;
someQuery.SQL.Add( 'UPDATE `someDBname`.`someTABLEname` ( client, phone, email, details, specials, price, address, deadline, status ) values ( :client, :phone, :email, :details, :specials, :price, :address, :deadline, :status ) ' ) ;
someQuery.Params.ParamByName( 'client' ).AsString := someForm.Edit1.Text ;
someQuery.Params.ParamByName( 'telefon' ).AsString := someForm.Edit2.Text ;
someQuery.Params.ParamByName( 'email' ).AsString := someForm.Edit3.Text ;
someQuery.Params.ParamByName( 'detalii' ).AsString := someForm.Edit4.Text ;
someQuery.Params.ParamByName( 'mentiuni' ).AsString := someForm.Edit5.Text ;
someQuery.Params.ParamByName( 'pret' ).AsString := someForm.Edit6.Text ;
someQuery.Params.ParamByName( 'livrare' ).AsString := someForm.Edit7.Text ;
someQuery.Params.ParamByName( 'deadline' ).AsDateTime := someForm.DateTimePicker1.DateTime ;
someQuery.Params.ParamByName( 'status' ).AsString := someForm.Edit9.Text ;
someQuery.ExecSQL(true);
我不知道如何将包含ID(第一个代码示例)的WHERE 子句转换为parameters(第二个代码示例)
还没有弄清楚,我似乎在谷歌上找不到关于如何在parameters 中使用WHERE 的示例。
我在使用参数方面还很陌生。
Params.ParamsByName( 'id' ) 之后我应该写什么 - 以获得 id?
服务器是MYSQL。
如果我遗漏了任何内容,请在 cmets 中告诉我,我会编辑
提前致谢!
【问题讨论】:
-
您为什么认为可以从使用有效 SQL 更改为无效 SQL 以添加参数?你的第二个例子根本无效,有或没有参数。
-
@KenWhite 可能是因为我没有明白你显然做了什么,而且我还没有添加 where 我还没有测试任何东西。什么是无效的?
-
第二个示例中 UPDATE 的整个语法是错误的。查看第一个中的 SQL 语句,然后在第二个中比较它(不带参数)。 (其实就是把代码复制出来,粘贴到记事本里,把
SQL.Add('和结尾的');去掉再看。完全不一样,完全无效。切换到参数化语句时,不会改变 SQL 的整个语法。你仍然必须编写语法上有效的 SQL 语句;你不能只是在这个过程中创造一种新的语言。 -
@KenWhite - 是的,我从
insert into声明中复制粘贴了相同的东西,我用另一种形式添加东西,没有注意到差异并认为它会起作用,只是支付了访问sql w3学校,这对我来说更清楚了,谢谢指出。 -
@KenWhite - 你能提供一些关于 id 参数行应该是什么样子的信息吗?
标签: mysql sql parameters params sqlparameter