在c#中从db层调用sprocs

rak*_*los 1 c# database stored-procedures

假设你有一些简单的sprocs,例如

AddXYZ(param1,param 2 ......等)

getAllXYZ()

getXYZ(ID)

什么是从"数据库层"调用这些sprocs的"最佳实践"方法

我不想使用linq.只是简单的c#静态方法就如何做到这一点.

即时通讯使用sqlserver.

Ada*_*son 8

我不认为你真正的意思是static方法,因为这将是一个非常非OO的方式来做这样的事情,并且C#中没有这样的设施.但是,有一些标准的ADO.NET类可以让你在没有任何ORM包装或使用等DataSet的情况下执行此操作.-

如果您真的想要手动调用存储过程并在没有任何ORM或标准化存储机制的情况下获取一组结果,那么这将是您最好的选择:

using(System.Data.IDbConnection conn = /*create your connection here*/)
{
    using(System.Data.IDbCommand cmd = conn.CreateCommand())
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "AddXYZ";

        // add your parameters here using cmd.CreateParameter() and cmd.Parameters.Add()

        using(System.Data.IDbDataReader reader = cmd.ExecuteReader())
        {
            while(reader.Read())
            {
                // read your results row-by-row
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您没有指定要连接的数据库引擎,因此我使用了通用接口来抽象您.如果你希望(虽然我一般不赞成代码,做这个)你至少可以在添加参数方面使用特定于平台的类,使事情稍微容易,(代码是不是基于接口的方法,因为详细)

  • 这不是你必须担心的记忆 - 它是数据库连接. (3认同)

Tho*_*ung 5

这是你想要的?

SqlCommand cmd  = new SqlCommand("AddXYZ", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@param1", someValue));
Run Code Online (Sandbox Code Playgroud)