我想知道在从 ExecuteStoredProcedure 执行 sql 时是否需要使用参数化查询以防止 SQL 注入攻击?
根据这个MSDN 链接,我应该使用参数。
根据这个其他 MSDN 链接,使用 {0} 的 sql 字符串等效于使用参数。
那么在我的 SQL 语句中只包含 {0}、{1} 等真的可以吗:
var rv = _context.ExecuteStoreQuery<int>("select ID from table where typeID = {0}", typeID);
还是我需要:
var param = new SqlParameter("@typeID", SqlDbType.Int);
param.Value = typeID;
var rv = _context.ExecuteStoreQuery<int>("select ID from table where typeID = @typeID", param);