c# - C#调用存储过程

标签 c# stored-procedures

我想使用 C# 调用存储过程。

我想为过程调用创建一个速记。

我仍然不想重新定义连接并打开它。 如何创建方法 - 我仍然没有打开与数据库的连接?

我使用以下代码:

SqlConnection conn = null;
SqlDataReader rdr  = null;

conn = new SqlConnection("");
conn.Open();

SqlCommand cmd  = new SqlCommand("Procedure", conn);
cmd.CommandType = CommandType.StoredProcedure;

rdr = cmd.ExecuteReader();

while (rdr.Read())
{
}

最佳答案

我不知道我是否明白你在问什么,但你的意思是这样的:

public static SqlReader executeProcedure(SqlConnection oConn, string commandName, Dictionary<string, object> params)
{
    SqlCommand comm = oConn.CreateCommand();
    comm.CommandType = CommandType.StoredProcedure;
    comm.CommandText = commandName;
    if (params != null)
        foreach(KeyValuePair<string, object> kvp in params)
            comm.Parameters.Add(new SqlParameter(kvp.Key, kvp.Value));
    return comm.ExecuteReader();
}

一个使用示例可能是

Dictionary<string, object> paras = new Dictionary<string, object>();
paras.Add("user_name", "Timmy");
paras.Add("date", DateTime.Now);
SqlReader results = executeProcedure(oConn, "sp_add_user", paras);
while (results.Read())
{
    //do something with the rows returned
}
results.Close();

关于c# - C#调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10556354/

相关文章:

python - 在使用用 PL/Python 编写的 bool 存储过程的 PostgreSQL CHECK 约束中,可以更新错误消息的详细信息吗?

mysql - SQL 存储过程 - 变量太短

c# - C#中的多线程加密

c# - 内存屏障生成器

php - PDO 存储过程调用

mysql - 动态 SQL 替代方案 (MySql)

c# - 如何迭代两个集合?

c# - 如何在 C#/IL 中改变盒装值类型(原始或结构)

c# - 动态状态机的更多 .net 方法

php - MySQL 过程不返回第一行