C# GetNextID()-C中的方法#

C# GetNextID()-C中的方法#,c#,sql,C#,Sql,如何通过c#方法执行此T-SQL命令,以便获得表的下一个ID declare @IDColumnName as varchar(150) declare @TableName as varchar(150) declare @SQL as nvarchar(1000) declare @returns as int set @IDColumnName = 'ID' set @TableName = 'User' set @returns = -1 set @SQL = 'select MAX

如何通过c#方法执行此T-SQL命令,以便获得表的下一个ID

declare @IDColumnName as varchar(150)
declare @TableName as varchar(150)
declare @SQL as nvarchar(1000)
declare @returns as int

set @IDColumnName = 'ID'
set @TableName = 'User'
set @returns = -1

set @SQL = 'select MAX([' + @IDColumnName + ']) from [' + @TableName + ']'
--print @SQL

EXEC @returns = sp_executesql @SQL

--print @returns

请注意,这是一个明显的比赛条件,除非你采取了钥匙范围锁。为什么不使用
标识
?但是如果您
选择该值,您应该能够使用


还有,;如果不将表列为白名单,则存在SQL注入风险。

请注意,这是一个明显的竞争条件,除非您使用密钥范围锁。为什么不使用
标识
?但是如果您
选择该值,您应该能够使用


还有,;如果不将表列为白名单,则存在SQL注入风险。

这里有一个类似的问题


这里有一个类似的问题


最好使用identity other创建UDF并将代码放入此UDF中,然后使用Executescalar方法调用。

最好使用identity other创建UDF并将代码放入此UDF中,然后使用Executescalar方法调用。

使用可序列化事务,并接受阻塞。如果你还有别的,你就有比赛条件了。标识要便宜得多。使用可序列化事务,并接受阻塞。如果你还有别的,你就有比赛条件了。身份证要便宜得多。