首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DbConnection执行存储过程

使用DbConnection执行存储过程
EN

Stack Overflow用户
提问于 2010-12-30 17:08:38
回答 3查看 18.7K关注 0票数 3

我需要在数据库上执行一个存储过程。到目前为止,我得到的是有效的:

代码语言:javascript
复制
protected DbProviderFactory dbProviderFactory;
this.dbProviderFactory = DalFactory.GetFactory(this.adapterConfiguration);

DbConnection dbConnection = dbProviderFactory.CreateConnection();

dbConnection.ConnectionString = this.adapterConfiguration.DatabaseInformation.ExternalDatabaseInformation.connectionString;
            try
            {
                dbConnection.Open();
            }
            catch (Exception e)
            {

                throw;
            }

我怀疑DbCommand会这样做,但还没有发现任何有效的方法。假设必须执行名为"initialize“的存储过程。我该怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-30 17:26:16

对于SqlServer,这可能是这样的:

代码语言:javascript
复制
DbCommand command = new SqlCommand();
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "<your stored proc>";
command.Connection = dbConnection;

SqlParameter param1 = new SqlParameter("<your parameter>", MyVar);
command.Parameters.Add(param1);
//[...]

SqlParameter returnValue = new SqlParameter("ReturnValue", User);
returnValue.Direction = System.Data.ParameterDirection.ReturnValue;
command.Parameters.Add(returnValue);

command.Connection.Open();
command.ExecuteNonQuery();
int result = (int)command.Parameters["ReturnValue"].Value;
command.Connection.Close();
票数 13
EN

Stack Overflow用户

发布于 2010-12-30 17:10:49

创建命令,命令文本应为SP的名称,命令类型应为StoredProcedure。

票数 2
EN

Stack Overflow用户

发布于 2017-06-14 22:59:58

我在我的大多数应用程序中执行动态查询,但也有EF。我传递一个_ctx EF DbContext来运行我的存储过程。我确信有一种方法可以用sql完成这一切,但我还没有弄明白。

代码语言:javascript
复制
            using (_ctx)
            {
                if (_ctx.Database.Connection.State != ConnectionState.Open)
                    _ctx.Database.Connection.Open();
                foreach (var name in _tableNames)
                {
                    using (var cmd = _ctx.Database.Connection.CreateCommand())
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.CommandText = @"UpdateRMRowsToUpload";
                        cmd.Parameters.Add(new SqlParameter("@tableName", SqlDbType.VarChar));
                        cmd.Parameters["@tableName"].Direction = Input;
                        cmd.Parameters["@tableName"].Value = name;
                        cmd.ExecuteNonQuery();
                    }
                }
                if (_ctx.Database.Connection.State == ConnectionState.Open)
                    _ctx.Database.Connection.Close();
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4561323

复制
相关文章

相似问题

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