简单的sql列名参数化问题,解决马上给分
SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@colname", "id,name,role") };
string sql = "select @colname from demo"
以上的代码是实现不了的
问题:如果不采用存储过程,代码直接传递字符串sql语句,能不能在sql语句的列名上使用参数化(例如上面代码)?
sql?
参数化?
------解决方案--------------------列名不能参数化,不过你可以使用string.Format()
string[] columns = { "id", "name", "role" };
string sql = string.Format("select {0} from demo", string.Join(", ", columns));
------解决方案--------------------列名不可以参数,
不如把整个sql参数化好了
SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@sql", "select id,name,role from demo") };
string sql = "@sql"
------解决方案--------------------列名不要带空格,构造SQL之前去掉空格和逗号引号这些非法字符,也就没有注入风险了。
------解决方案--------------------假设可以参数化,那你那样写是select id,name,role这三列呢还是select "id,name,role"这一个字符串呢?
还是拼字符串吧