ADOQuery1.SQL.Text :='SELECT * FROM :Tname'; ADOQuery1.Parameters.ParamByName('Tname').Value:='Table Name';
!!!!!ADOQuery1.SQL.Text :='SELECT * FROM :Tname'; ADOQuery1.Parameters.ParamByName('Tname').Value:='Table Name';!!!!! 这样不行,没有这样用的。楼主可以考虑一楼的说法。
ADOQuery1.SQL.Text :='SELECT * FROM :Tname'; ADOQuery1.Parameters.ParamByName('Tname').Value:='Table Name'; 两种方法都可以
ADOQuery1.SQL.Text :='SELECT * FROM :Tname'; ADOQuery1.Parameters[0].value:='Table Name';
我的方法可以避免 SQL 注入 攻击
ADOQuery1.SQL.Text :='SELECT * FROM :Tname'; ADOQuery1.Parameters.ParamByName('Tname').Value:='Table Name';
if adodataset.activex=true then begin admodataset.activex:=fasle; adodataset.close; adodataset.commandtext:=''; adoDataset.commandtext:='Select * from '+Tname; adoDataSet.open; end;
SQL server里面,表名不能当然参数输入。但是可以用存储过程来实现参数 DECLARE @SQL NVARCHAR(4000) SET @SQL=N' select '+@a+' from '+"'"+@b+"'"+' right join '+"'"+@c+"'"+' on '+"'"+@b+"'"+'.'+@e+'='+"'"+@c+"'"+'.'+@e+' where @f' EXEC sp_executesql @SQL 选动态生成SQL语句然后再执行就可以了。delphi可能也是这样吧。
adoDataset.commandtext:='Select * from '+Tname;
adoDataSet.open;
begin
with ADOQuery1 do begin
SQL.Clear;
SQL.Text := 'SELECT * FROM' + TName;
Open;
end;
end;
这里不对了,FROM后面没有加空格,一楼的对了!
ADOQuery1.Parameters.ParamByName('Tname').Value:='Table Name';
ADOQuery1.Parameters.ParamByName('Tname').Value:='Table Name';!!!!!
这样不行,没有这样用的。楼主可以考虑一楼的说法。
ADOQuery1.Parameters.ParamByName('Tname').Value:='Table Name';
两种方法都可以
ADOQuery1.Parameters[0].value:='Table Name';
ADOQuery1.Parameters.ParamByName('Tname').Value:='Table Name';
begin
admodataset.activex:=fasle;
adodataset.close;
adodataset.commandtext:='';
adoDataset.commandtext:='Select * from '+Tname;
adoDataSet.open;
end;
DECLARE @SQL NVARCHAR(4000)
SET @SQL=N' select '+@a+' from '+"'"+@b+"'"+' right join '+"'"+@c+"'"+' on '+"'"+@b+"'"+'.'+@e+'='+"'"+@c+"'"+'.'+@e+' where @f'
EXEC sp_executesql @SQL 选动态生成SQL语句然后再执行就可以了。delphi可能也是这样吧。