簡體   English   中英

如何從存儲過程中獲取值

[英]How to get a value from a stored procedure

我想知道如何獲取存儲過程的參數。 我是ASP.Net C#的新手。這是我的存儲過程。

ALTER procedure [dbo].[obtnCtUsuarios]
    ((@nombre nvarchar (20))
AS
    SELECT
        id, idEmpresa 
    FROM
        ctUsuarios 
    WHERE
        nombre = @nombre 
    ORDER BY
        idNombre DESC

我在這里遇到錯誤,因為我不知道如何放置參數。

public List<ctUsuarios> select_ALL_ctUsuarios()
{
    List<ctUsuarios> LstctUsuarios = new List<ctUsuarios>();

    string storedProcedure = "obtnCtUsuarios";

    using (DbConnection con = Conexion.dpf.CreateConnection())
    {
        con.ConnectionString = Conexion.constr;

        using (DbCommand cmd = Conexion.dpf.CreateCommand())
        {
            cmd.Connection = con;
            cmd.CommandText = storedProcedure;
            cmd.CommandType = CommandType.StoredProcedure;

            con.Open();                   

            using (DbDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    LstctUsuarios.Add(
                            new ctUsuarios((int)dr["idUsuario"],
                                (string)dr["id"],
                                (string)dr["idEmpresa"]));
                }
            }
        }
    }

    return LstctUsuarios;
}

這是我的連接和ExecuteNonQuery

public class Conexion
{
    public Conexion()
    { }

    public static string constr
    {
        get { return ConfigurationManager.ConnectionStrings["Conn"].ConnectionString; }
    }

    //Cliente
    public static string Provider
    {
        get { return ConfigurationManager.ConnectionStrings["Conn"].ProviderName; }
    }

    public static DbProviderFactory dpf
    {
        get
        {
            return DbProviderFactories.GetFactory(Provider);
        }
    }

    private static int ejecutaNonQuery(string storedProcedure, List<DbParameter> parametros)
    {
        int Id = 0;

        try
        {
            using (DbConnection con = Conexion.dpf.CreateConnection())
            {
                con.ConnectionString = Conexion.constr;

                using (DbCommand cmd = Conexion.dpf.CreateCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandText = storedProcedure;
                    cmd.CommandType = CommandType.StoredProcedure;

                    foreach (DbParameter param in parametros)
                        cmd.Parameters.Add(param);

                    con.Open();
                    Id = cmd.ExecuteNonQuery();
                }
            }
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            //conection.close();
        }

        return Id;
    }

有人可以幫我獲取參數嗎? 謝謝

cmd.Parameters.AddWithValue("@nombre", value);

這就是將參數添加到數據庫命令的方式,這就是我想問的。

編輯:

using (DbConnection con = Conexion.dpf.CreateConnection())
{
    con.ConnectionString = Conexion.constr;

    using (DbCommand cmd = Conexion.dpf.CreateCommand())
    {
        cmd.Connection = con;
        cmd.CommandText = StoredProcedure;

        // here is good
        cmd.Parameters.AddWithValue("@nombre", yourParamValue);
        cmd.CommandType = CommandType.StoredProcedure;

        con.Open(); 

cmd.Parameters.Add(literalFromSproc, SqlDbType.VarChar).Value =將執行您想要的操作。 如果說您的存儲過程中有一個名為@Name的參數,則可以執行cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = "evan";

還有類似的變體,例如AddWithValue都可以使用。 這里查看文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM