Jump to content
fcastro

Guardar Select numa variavel

Recommended Posts

fcastro

Boas pessoal

Tenho uma pequena duvida que parece ser mesmo de novato (Que é o que eu sou) :P

int resultado;

            comando.Connection = conn;

            conn.Open();
            comando.CommandText = "Select MAX (nrjornada) from jornadas";
            dr = comando.ExecuteReader();
            //if (dr.HasRows)


            while (dr.Read())
            {

                resultado = dr.GetInt32(0);

            }

Queria guardar o valor maximo do campo nrjornada da tabela jornadas na variavel "resultado" mas dá me o seguinte erro:

 

An unhandled exception of type 'System.InvalidCastException' occurred in System.Data.dll

Este erro dá me na linha dentro do "While".

A variavel resultado terá que ser do tipo int, pois vou ter que fazer uma condição com outra variavel int.

 

Alguem tem alguma maneira de me safar? :D

Share this post


Link to post
Share on other sites
vikcch

quando queres retornar apenas um valor da bd (Max, Count, etc...) podes em vez do metodo ExecuteReader() podes usar o metodo ExecuteScalar(), não precisas do ciclo while

int resultado = Convert.ToInt32(comando.ExecuteScalar());

 

Share this post


Link to post
Share on other sites
fcastro

Boas vikcch,

 

A tua sugestão resultou na perfeição. Muito obrigado.

Há alguma maneira de colocar num comando sql uma condição que exista o nome de uma label?

Como isto: "Select MAX (nrjornada) from jornadas where (liga)=lblliga.text"

Ou será necessário criar uma variavel para introduzir o valor da label?

Muito obrigado mais uma vez

Edited by fcastro

Share this post


Link to post
Share on other sites
vikcch

podes introduzir directamente bastando concatenado a string e usar plicas...

comando.CommandText = "Select MAX nrjornada FROM jornadas WHERE liga = '" + lblliga.Text + "'";

 

podes tambem usar o metedo Format...

comando.CommandText = string.Format("Select MAX nrjornada FROM jornadas WHERE liga = {0}", lblliga.Text);

 

mas a maneira melhor para se fazar é usar parâmetros, evita problemas de SQL INJECTION

comando.CommandText = "Select MAX nrjornada FROM jornadas WHERE liga = @p_liga";

comando.Parameters.AddWithValue("@p_liga", lblliga.Text);

 

  • Vote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.