Array
(
)

Como passar paramentros no cSharp

Regis
   - 22 nov 2012

Galera tenho metodos que retorna um table mas quando tento passar uma proc do sql com parametros nao da certo
--Aqui a classe
public DataTable Selecionar(string sql)
{
SqlConnection conexao = new SqlConnection(_Conexao);
SqlCommand comando = conexao.CreateCommand();
comando.CommandText = sql;
SqlDataAdapter adaptador = new SqlDataAdapter(comando);
DataTable tabela = new DataTable();
conexao.Open();
adaptador.Fill(tabela);
conexao.Close();
return tabela;
}

Aqui o metodo utilizado no webform
Conexao cnn = new Conexao();
GridView1.DataSource = cnn.Selecionar("prc_movimento parametro1, parameto2");
GridView1.DataBind();
Alguem poderia me dizer como se passa esses dois parametros ?

Pjava
   - 22 nov 2012

Veja se isso te ajuda. Veja tudo aqui: http://www.macoratti.net/09/03/aspn_usp.htm

protected void Page_Load(object sender, EventArgs e)
{
PopulaGrid();
}

public void PopulaGrid()
{

DataSet ds = new DataSet();
SqlConnection conexao= null;

try
{
conexao = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

SqlDataAdapter da;
da = new SqlDataAdapter("exibeContatos", conexao );
da.SelectCommand.CommandType = CommandType.StoredProcedure;

conexao .Open();
da.Fill(ds);

GridView1.DataSource = ds;
GridView1.DataBind();
}
catch (Exception ex)
{
lblmsg.Text = ex.Message;
}
Finally
{
conexao.Close();
}
}

Joel Rodrigues
   - 22 nov 2012

Regis, para utilizar Stored Procedures com parâmetros, você precisa informar esses valores através da propriedade Parameters do SqlCommand.
Qual erro está dando?

Regis
   - 23 nov 2012

Na verdade eu já tenho um método pronto para popular o gridview será que nao teria uma forma mais fácil de se fazer isso

Conexao cnn = new Conexao();
GridView1.DataSource = cnn.Selecionar("stored_procedure + parametro ");
GridView1.DataBind();

Regis
   - 23 nov 2012

amigo vc teria um exemplo de como se fazer isso ?

Joel Rodrigues
   - 23 nov 2012

Cara, para usar parâmetro, seria mais ou menos o seguinte (desconsidere erros de digitação e sintaxe, não estou testando esse código):
#Código

sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.CommandText = "usp_Selecionar_Cientes";
sqlCmd.Parameters.AddWithValue("CODIGO", 123);

//...preencher uma tabela com o DataAdapter


Boa sorte.

Joel Rodrigues
   - 23 nov 2012

Regis, nunca testei, mas experimente continuar fazendo da forma como está, mas alterando o CommandType para StoredProcedure, como eu fiz acima.
Se não der, aí você usa os parâmetros.

Regis
   - 24 nov 2012

Quase lá

conexao cnn = new conexao () ;
SqlCommand sqlCmd = new SqlCommand() ;

sqlCmd.CommandType = CommandType.StoredProcedure;

GridView1.DataSource = sqlCmd.CommandText = "prc_movimento_ano";

sqlCmd.Parameters.AddWithValue("Ds_Ano",2012);

GridView1.DataBind();

A procedure rodou porem ao inves de trazer o movimento do ano no gridview ela trouxe a string "prc_movimento_ano" uma letra em cada row do gridView

Joel Rodrigues
   - 27 nov 2012

O problema está aqui:
#Código

GridView1.DataSource = sqlCmd.CommandText = "prc_movimento_ano";

Você passou um string pro DataSource. Tente fazer:
#Código
GridView1.DataSource = sqlCmd.ExecuteReader();

Se não der, use um DataAtapter para preencher um DataTable e passar essa tabela para o GridView.
Boa sorte.