Csharp/C#教程:SqlParameter C#上的表名和表字段?分享


SqlParameter C#上的表名和表字段?

我想知道如何通过C#上的SqlCommand传递表名和表字段名。

尝试通过使用@符号设置SqlCommand但不起作用来完成它。 有任何想法吗??

如果您担心SQL注入, SqlCommandBuilder类(以及其他特定于DB的DbCommandBuilder版本)都有一个名为QuoteIdentifier的函数,它将正确地转义您的表名。

var builder = new SqlCommandBuilder(); string escTableName = builder.QuoteIdentifier(tableName); 

现在,您可以在构建语句时使用转义值,而不必担心注入 – 但您仍应使用任何值的参数。

我想你正在尝试执行像这样的sql语句

 select @field from @table 

但那不行。 Sql不能在字段名或表名上有参数,只能在值上。

如果我的猜测不正确,请扩展您的问题。

SqlCommand参数只能用于传递数据。 您不能使用它们来修改sql语句(例如向select语句添加其他字段)。 如果你需要修改sql语句,我建议使用StringBuilder来创建tsql语句。

为了进一步说明,.Net在将sql发送到SqlServer之前不会连接它(至少不是你想象的直接方式)。 它实际上调用存储过程并单独传递参数。 这允许Sql Server缓存查询计划并优化tsql的性能。

如果你要编写这个SqlCommand …

 var cmd = new SqlCommand("SELECT * FROM MyTable WHERE MyID = @MyID", conn); cmd.Parameters.AddWithValue("@MyID", 1); cmd.ExecuteNonQuery(); 

这是发给Sql Server的tsql …

 exec sp_executesql N'SELECT * FROM MyTable WHERE MyID = @MyID',N'@MyID int',@MyID=1 

您可以在MSDN上阅读有关sp_executesql的更多信息。

上述就是C#学习教程:SqlParameter C#上的表名和表字段?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/998291.html

(0)
上一篇 2021年12月26日
下一篇 2021年12月26日

精彩推荐