繁体   English   中英

C# SQLite:可以用参数代替表名吗?

[英]C# SQLite: Can you use a parameter in place of a table name?

我有一个数据库,其中包含名称相似的表,并且想根据参数访问它们的数据。 我尝试使用的 SQL 字符串如下所示:

string sql = "SELECT * FROM @table WHERE EntryID = @ID"

然后让参数添加表名

cmd.Parameters.Add("@table", DbType.String).Value = tableName;

这只是我的实际代码的伪代码,但它非常接近我正在使用的代码。

您可以,因为您可以控制字符串的内容。

您可以通过在其中添加表名来构造字符串。

示例: string sql = $"SELECT * FROM {tableName} WHERE EntryID = @ID"

这称为字符串插值 我在我的基类中使用类似的方法进行 CRUD 操作。

编辑:

有提到是对SQL注入开放。 如果 OP 示例中名为tableName的参数由开发人员控制并且不接受用户输入,那么这是安全的。 如果出于某种非常奇怪的原因参数需要用户输入,则可以打开 SQL 注入并且应该这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM