请问字段名如何做SQL参数?能实现吗?
QryTemp.SQL.Clear;
SQLStr :='update temp set :cField =:nNew where id =:nId';//字段名如何做SQL参数?
QryTemp.SQL.Add(SQLStr);
QryTemp.ParamByName('cField').AsString := TableField ;
QryTemp.ParamByName('nNew').AsInteger :=ACountNew[I];
QryTemp.ParamByName('nId').AsInteger := I+1 ;
QryTemp.ExecSQL;
QryTemp.Close;
我试过好像不行,请指教!
QryTemp.SQL.Clear;
SQLStr :='update temp set :cField =:nNew where id =:nId';//字段名如何做SQL参数?
QryTemp.SQL.Add(SQLStr);
QryTemp.ParamByName('cField').AsString := TableField ;
QryTemp.ParamByName('nNew').AsInteger :=ACountNew[I];
QryTemp.ParamByName('nId').AsInteger := I+1 ;
QryTemp.ExecSQL;
QryTemp.Close;
我试过好像不行,请指教!
这样做果然是不行的;
with Self.ADOQuery1 do
begin
sql.Clear;
sql.Add('update tab set :xx=:yy where b=:zz');//tab表名、b字段名
Parameters.ParamByName('xx').Value := 'a';//字段名
Parameters.ParamByName('yy').Value := 'New_Value';//新的值
Parameters.ParamByName('zz').Value := 33;//条件
ExecSQL;
end;
这样就可以了
-------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
TableField : string;
sqlstring: string;
begin
TableField := 'a';
sqlstring := 'update tab set '+TableField +'=:yy where b=:zz';
//TableField 在这里传进去
with Self.ADOQuery1 do
begin
sql.Clear;
sql.Add(sqlstring);
Parameters.ParamByName('yy').Value := 'New_Value';
Parameters.ParamByName('zz').Value := 33;
ExecSQL;
end;
end;
哈哈,楼主,自言自语。