我有动态创建的数据库表。它们都具有相同的名称,但在名称末尾具有唯一的ID,例如myTable1,myTable2等。
我有这些 ID,但问题是我的 SQL 在使用 sqlclient 的 C# 中应该是什么样子?
例如:
string sql = "SELECT * FROM myTable"+id;
有效,但仍对SQL注入开放
我也试过:
string sql = "SELECT * FROM myTable@id";
command.Parameters.AddWithValue("id", id);
但不起作用,因为 sql 将表名读取为myTable@id而不是例如 myTable1
有没有办法为表名插入参数?
常规 SQL 不能对字段名或表名有参数,只能对值有参数。
看看Dynamic SQL
。
-
SELECT * FROM @tablename
我认为在此特定查询中使用列名可能会完成这项工作.
string sql = "SELECT colName1, colName2 , colname ......FROM myTable"+id;