首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过将存储过程编写为字符串来执行存储过程是一种好的做法吗?

通过将存储过程编写为字符串来执行存储过程是一种好的做法吗?
EN

Stack Overflow用户
提问于 2019-04-16 01:20:54
回答 1查看 135关注 0票数 0

这是不是一种好的做法?

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-16 03:03:51

下面是添加了Commandtype的代码

代码语言:javascript
复制
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;

通过将存储过程编写为字符串来执行存储过程是一种好的做法吗?

可能会出什么问题?

  • SQL注入?当您如上所述将SQL设置为硬编码字符串时,不可能出现attack.
  • Stored注入CommandText过程名称与调用代码不同步的情况:如果调用代码引用未知的存储过程,则可能会出现运行时异常。
    • 将您的存储过程创建脚本置于版本控制之下,靠近使用它的代码。通过这种方式,可以使存储过程与code.
    • Automatic保持同步。可以创建changes

测试,以注意存储过程是否有损坏的C#

如果存储过程仅插入单个UserDetails实体,则还可以使用实体框架。This article展示了如何通过在Fluent API中调用MapToStoredProcedures()将实体CUD (创建、更新、删除)操作自动映射到存储过程。本文还解释了如何将您自己的自定义存储过程映射到EF实体。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55694358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档