我想知道如何获取存储过程的参数。我是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;
}
有人可以帮助我获取参数吗? tHx
答案 0 :(得分:3)
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();
答案 1 :(得分:1)
cmd.Parameters.Add(literalFromSproc, SqlDbType.VarChar).Value =
会做你想要的。如果说你的sproc中有一个名为@Name
的param,你会做 - cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = "evan";
还有类似AddWithValue
的变体可以使用。查看文档here