如何在 sql 参数中使用 WHERE ID
How to use WHERE ID in sql Parameters
我有以下内容:
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
(第二个代码示例)
还没弄清楚,我似乎无法在 google 上找到有关如何在 parameters
中使用 WHERE
的示例。
我对使用参数相当陌生。
Params.ParamsByName( 'id' )
后面应该写什么 - 获取id?
服务器是 MYSQL
。
如果我遗漏了什么,请在评论中告诉我,我会编辑
提前致谢!
很高兴您决定从字符串连接切换到参数绑定,但这并不意味着您可以更改 UPDATE 语法。您仍然受 documented syntax 的约束
'UPDATE `someDBname`.`someTABLEname` SET client=:client, phone=:phone, email=:email, details=:details, specials=:specials, price=:price, address=:address, deadline=:deadline, status=:status WHERE id=:id';
这与您的第一个查询中的语法几乎相同,但您使用的不是字符串连接,而是占位符。然后你一个一个绑定参数
someQuery.Params.ParamByName( 'client' ).AsString := someForm.Edit1.Text ;
someQuery.Params.ParamByName( 'telefon' ).AsString := someForm.Edit2.Text ;
我有以下内容:
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
(第二个代码示例)
还没弄清楚,我似乎无法在 google 上找到有关如何在 parameters
中使用 WHERE
的示例。
我对使用参数相当陌生。
Params.ParamsByName( 'id' )
后面应该写什么 - 获取id?
服务器是 MYSQL
。
如果我遗漏了什么,请在评论中告诉我,我会编辑
提前致谢!
很高兴您决定从字符串连接切换到参数绑定,但这并不意味着您可以更改 UPDATE 语法。您仍然受 documented syntax 的约束
'UPDATE `someDBname`.`someTABLEname` SET client=:client, phone=:phone, email=:email, details=:details, specials=:specials, price=:price, address=:address, deadline=:deadline, status=:status WHERE id=:id';
这与您的第一个查询中的语法几乎相同,但您使用的不是字符串连接,而是占位符。然后你一个一个绑定参数
someQuery.Params.ParamByName( 'client' ).AsString := someForm.Edit1.Text ;
someQuery.Params.ParamByName( 'telefon' ).AsString := someForm.Edit2.Text ;