Usuário com melhor resposta
Data duplicada no banco

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
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
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
-
-
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
-
-
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 -
-
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
-
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.