这是否是一种好的做法?
cmd.CommandText = "StoredProcedureName_InsertUserDetails"; //Is this line a good or bad since Sql injection is possible here.
cmd.Parameters.Add(new SqlParameter("@name",SqlDbType.VarChar)).Value=name;
cmd.Parameters.Add(new SqlParameter("@age",SqlDbType.Int)).Value=age;
答案 0 :(得分:2)
这是添加了Commandtype
的代码:
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "StoredProcedureName_InsertUserDetails"; // This line is ok
cmd.Parameters.Add(new SqlParameter("@name",SqlDbType.VarChar)).Value=name;
cmd.Parameters.Add(new SqlParameter("@age",SqlDbType.Int)).Value=age;
通过将存储过程写为 字符串?
怎么了?
CommandText
设置为硬编码字符串时,SQL注入攻击是不可能的。如果存储过程仅插入单个UserDetails
实体,则也可以使用Entity Framework。 This article显示了如何通过在Fluent API中调用MapToStoredProcedures()
自动将实体CUD(创建,更新,删除)操作映射到存储过程。本文还介绍了如何将自己的自定义存储过程映射到EF实体。