none
Data duplicada no banco RRS feed

  • Pergunta

  • Olá galera?? eu de novo kkkk

    Alguém poderia dar uma olhada no meu código e ver o que esta de errado por que não consigo fazer a consulta.

                public void DU()

             {
                 sqlConn = new MySqlConnection(strConn);
                 sqlConn.Open();
                 try
                 {
                     DateTime minha = DateTime.Now.Date;
                     string dt = minha.ToString("yyyy-MM-dd");
                     string horaInicio = maskFim.Text;
                     string horafim = maskFim.Text;

                     string consulta = "select count(codigo) from tb_prof_sala where '" + horaInicio + "' = horainicio and horafim = '" + horafim + "' and dataAtual = " + dt;

                    // string consulta = "select count(codigo) from tb_prof_sala where  horaInicio = @horainicio and  horafim = @horafim and dataAtual = " + dt;

                     MySqlCommand cmd = new MySqlCommand(consulta, sqlConn);

                     cmd.Parameters.Add("horaInicil", MySqlDbType.VarChar).Value = horaInicio;
                     cmd.Parameters.Add("horafim", MySqlDbType.VarChar).Value = horafim;                 

                    int v = (int)Convert.ToInt32(cmd.ExecuteScalar());

                     if (v > 0)
                     {
                         MessageBox.Show("Já existe aula salva no banco com essa hora");
                     }
                     else
                     {
                         MessageBox.Show("Erro na consulta");
                     }
                 }
                 catch (MySqlException erro)
                 {
                     MessageBox.Show("Erro ao Conectar no banco " + erro);
                 }

             }

    Desde já muito obrigado.


    • Editado Purga quinta-feira, 20 de setembro de 2012 22:57
    quinta-feira, 20 de setembro de 2012 22:54

Respostas

  • E ae tucão, blz cara?

    Seguinte cara, para mim não ta fazendo sentido.

    Olha só, where CampoDoTabela = DataDigitadaPeloUsuario

    É isto que você quer fazer certo?

    O que você esta fazendo é

    where DataDigitadaPeloUsuario = DataDigitadaPeloUsuario

    na cláusula where você especifica o campo para comparação entende?

    Então do jeito que você estava fazendo antes parece que esta correto.

    DateTime horaInicio = Convert.ToDateTime(maskFim.Text);
    DateTime horafim = Convert.ToDateTime(maskFim.Text);
    
    string consulta = "select count(codigo) from tb_prof_sala where horaInicio = @horainicio and  horafim = @horafim";
    
    MySqlCommand cmd = new MySqlCommand(consulta, sqlConn);
    
    cmd.Parameters.Add("@horainicio",SqlDbType.DateTime); 
    cmd.Parameters["@horainicio"].Value = horaInicio;
    
    cmd.Parameters.Add("@horafim",SqlDbType.DateTime); 
    cmd.Parameters["@horafim"].Value = horaFim;



    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS

    • Marcado como Resposta Purga sábado, 22 de setembro de 2012 03:24
    sexta-feira, 21 de setembro de 2012 17:00

Todas as Respostas

  • E ae cara, blz?

    Porque vc esta tratando data como VarChar? esta assim no banco?

    Se não estiver tenta fazer desta forma por exemplo:

    cmd.Parameters.Add("@data",SqlDbType.DateTime); 
    cmd.Parameters["@data"].Value = DateTime.Now;


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS

    quinta-feira, 20 de setembro de 2012 23:10
  • Por que eu não quero que ele pegue a data atual e sim o que o usuario digita. 
    sexta-feira, 21 de setembro de 2012 02:40
  • Cara, se no seu banco está como Date tenta passar como DateTime mesmo, converte o que o usuário informou no campo para DateTime e passa esse valor na consulta.

    Outra coisa, o seu select ta estranho, porque você esta fazendo isso?

    where '" + horaInicio + "' = horainicio


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS

    sexta-feira, 21 de setembro de 2012 02:58
  •  where '" + horaInicio + "' = horainicio and horafim = '" + horafim + "' and dataAtual = " + dt;

    ha horaInicio esta recebendo a hora que o usuario digita, onde ele vai compara se é igual com o campo horaInico do banco se é igual.

    sexta-feira, 21 de setembro de 2012 03:14
  • Olá,

    Ao invés de concatenar os valores na sua query, utilize parâmetros, como está a parte comentada do seu código... Por quê você comentou a parte que utiliza parâmetros e fez concatenando os valores na query?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    sexta-feira, 21 de setembro de 2012 10:53
    Moderador
  • Por que eu não quero que ele pegue a data atual e sim o que o usuario digita. 
    sexta-feira, 21 de setembro de 2012 16:50
  • E ae tucão, blz cara?

    Seguinte cara, para mim não ta fazendo sentido.

    Olha só, where CampoDoTabela = DataDigitadaPeloUsuario

    É isto que você quer fazer certo?

    O que você esta fazendo é

    where DataDigitadaPeloUsuario = DataDigitadaPeloUsuario

    na cláusula where você especifica o campo para comparação entende?

    Então do jeito que você estava fazendo antes parece que esta correto.

    DateTime horaInicio = Convert.ToDateTime(maskFim.Text);
    DateTime horafim = Convert.ToDateTime(maskFim.Text);
    
    string consulta = "select count(codigo) from tb_prof_sala where horaInicio = @horainicio and  horafim = @horafim";
    
    MySqlCommand cmd = new MySqlCommand(consulta, sqlConn);
    
    cmd.Parameters.Add("@horainicio",SqlDbType.DateTime); 
    cmd.Parameters["@horainicio"].Value = horaInicio;
    
    cmd.Parameters.Add("@horafim",SqlDbType.DateTime); 
    cmd.Parameters["@horafim"].Value = horaFim;



    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS

    • Marcado como Resposta Purga sábado, 22 de setembro de 2012 03:24
    sexta-feira, 21 de setembro de 2012 17:00
  • Janderson muito obrigado pela dica fiz como vc tinha passado, apenas acrescentei uma um campo e deu certinho valeu mesmo, vou posta o codigo pode servir para outra pessoa.

                                                       

    string consulta = "select count(codigo) from tb_prof_sala where  horaInicio = @horaInicio and  horafim = @horafim and dataAtual = @dataAtual";

                     MySqlCommand cmd = new MySqlCommand(consulta, sqlConn);
                     cmd.Parameters.Add("@horainicio", MySqlDbType.DateTime);
                     cmd.Parameters["@horainicio"].Value = horaInicio;

                     cmd.Parameters.Add("@horafim", MySqlDbType.DateTime);
                     cmd.Parameters["@horafim"].Value = horafim;

                     cmd.Parameters.Add("@dataAtual", MySqlDbType.DateTime);
                     cmd.Parameters["@dataAtual"].Value = dt;

    Obrigado.

       
    sábado, 22 de setembro de 2012 03:26