• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

hardcore

Select a uma tabela criada em MySql

13 mensagens neste tópico

Oi pessoal, estou aqui com uma pequena dúvida!

O que se passa é o seguinte:

Estou a fazer um count a uma tabela de uma base de dados criada em MySql. O objectivo é ela devolver um valor maior que zero. Eujá fiz um exercicio similar com o C# e o Microsoft SQL Server, mas desta vem, feito em MySql teima em não funcionar. Será que podem dar uma vista de olhos ao código para me dizerem o que posso ter que alterar?

try
{
    string username = user.Text;
    string password = pass.Text;

    if (username.StartsWith("a"))
    {
         MySqlConnection myConnection = new MySqlConnection(@"Database=Teste;Data Source=localhost;User Id=root;Password=teste");
         myConnection.Open();
         //Label1.Text = "Pass!";
         MySqlCommand myCommand = new MySqlCommand("SELECT Count(*) FROM Administrativo WHERE idAdministrativo=?User AND Password_2=?Pass", myConnection);
         //Label1.Text = "Pass2!";
         myCommand.Parameters.AddWithValue("?User", MySqlDbType.VarChar).Value = username;
         myCommand.Parameters.AddWithValue("?Pass", MySqlDbType.VarChar).Value = password;
         // myCommand.ExecuteNonQuery();
         int conta = (int)myCommand.ExecuteScalar();
           
         //Label1.Text = conta.ToString();

         if (conta == 0)
         {
              password = "";
              username = "";
              Label1.Text = "Dados incorectos!";
         }
         else
         {
              Server.Transfer("AdministracaoInicio.aspx", true);
                    
          }
     }
  }
  catch
  { }

myCommand.Parameters.AddWithValue("?User", MySqlDbType.VarChar).Value = username;               
myCommand.Parameters.AddWithValue("?Pass", MySqlDbType.VarChar).Value = password;

Aqui já tentei com o Parameters.Add também.

int conta = (int)myCommand.ExecuteScalar();
//Label1.Text = conta.ToString();

A Label1 não me retorna nenhum valor aqui ;)

Um abraço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja exprimentaste com o ExecuteReader para ver se te retorna alguma coisa ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se colocares o SQL e não usares os parametros retorna alguma coisa

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se colocares o SQL e não usares os parametros retorna alguma coisa

Exactamente, se usar essa query sem os parâmetros no mysql retoma o valor que eu quero.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pode ser que sim, mas acho que tem outro problema.

Agora estava a tentar popular uma combobox e assim que corria o programa os valores não pareciam... Eu acho que ele não consegue fazer a ligação à base de dados....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu nunca tive problemas a usar os conectores de MySQL em C#...

tenta ver o q se passa pelo debug... ele não retorna nenhum erro?

O server de mySQL esta aonde? Na tua maquina?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, o server está na minha máquina e ele não retorna nenhum erro. Apenas não faz nada quando carrego no botão  :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

cola mesmo na tua query as variáveis username e password, tirando:

myCommand.Parameters.AddWithValue("?User", MySqlDbType.VarChar).Value = username;

myCommand.Parameters.AddWithValue("?Pass", MySqlDbType.VarChar).Value = password;

e experimenta

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

cola mesmo na tua query as variáveis username e password, tirando:

myCommand.Parameters.AddWithValue("?User", MySqlDbType.VarChar).Value = username;

myCommand.Parameters.AddWithValue("?Pass", MySqlDbType.VarChar).Value = password;

e experimenta

Acho que ja exprimentou isso

Exactamente, se usar essa query sem os parâmetros no mysql retoma o valor que eu quero.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que ja exprimentou isso

Yah não tinha visto.

Olha isto não devia estar comentado!!!

myCommand.ExecuteNonQuery();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem pessoal, como não podia estar a perder tempo com isto estive a adiantar outras coisas. Hoje voltei a dar uma olhadela e encontrei uma solução.... Em primeiro lugar tentei ver os valores numa GridView. Como o valor apareceu com sucesso decidi passar esse mesmo valor para uma TextBox. Assim já podia fazer o mesmo exercicio mas com uma string  ;)

Ora bem... a solução foi a seguinte:

try
        {
            string username = user.Text;
            string password = pass.Text;

            if (username.StartsWith("a"))
            {
                MySqlDataAdapter myDataAdapter;
                DataSet myDataSet;
                MySqlConnection myConnection = new MySqlConnection("Server=localhost;User ID=root;Password=teste;Database=mydatabase;Persist Security Info=True");
                myConnection.Open();
                MySqlCommand myCommand = new MySqlCommand("SELECT Count(*)FROM Administrativo WHERE idAdministrativo=?User AND Password_2=?Pass", myConnection);
                myCommand.Parameters.Add("?User", MySqlDbType.VarChar, 50, "idAdministrativo").Value = username;
                myCommand.Parameters.Add("?Pass", MySqlDbType.VarChar, 50, "Password_2").Value = password;
                myDataAdapter = new MySqlDataAdapter(myCommand);
                myDataSet = new DataSet();
                myDataAdapter.Fill(myDataSet);
                DataRow myDataRow;
                myDataRow = myDataSet.Tables[0].Rows[0];
                string result = myDataRow[0].ToString();

                if (result == "0")
                {
                    password = "";
                    username = "";
                    Label1.Text = "Dados incorectos!";
                }
                else
                {
                    Server.Transfer("AdministracaoInicio.aspx", true);

                }
            }
        }
        catch
        { }

Andei a dar uma vista de olhos mais atenta ao que o VisualStudio dizia em relação ao sintaxe a utilizar e reparei que tinha também de proceder a umas alterações no sintaxe dos parâmetros:

myCommand.Parameters.Add("?User", MySqlDbType.VarChar, 50, "idAdministrativo").Value = username;
myCommand.Parameters.Add("?Pass", MySqlDbType.VarChar, 50, "Password_2").Value = password;

Muito obrigado a todos pela vossa disponibilidade.

Um abraço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora