Erro no metodo?
Pessoal criei um método para verificar o nome de usuario no banco de dados, caso o nome seja ele salva no banco, caso já exista ele retorna um ErroProvider no campo de nome de usuario dizendo que ja existe, oque acontece é que tá verificando direitinho, quando vai salvar retorna a mensagem de que foi cadastrado com sucesso, mais não está sendo salvo no banco, e no Catcj() não retorna nenhum erro também por isso estou achando estranho porque minha String de cadastro no banco está correta, segue abaixo o código do método:
//Metodo de Inserir Funcionarios
public static void InserirFuncionario(Funcionario _funcionario, string USUARIO, ErrorProvider erro,ComponentFactory.Krypton.Toolkit.KryptonTextBox caixa)
{
using (MySqlConnection conexaoMySQL = clsBanco.getInstancia().getConexao())
{
try
{
string mSQL = "SELECT count(*) FROM FUNCIONARIOS WHERE USUARIO=@usuario";
MySqlCommand cmd = new MySqlCommand(mSQL, conexaoMySQL);
cmd.Parameters.AddWithValue("@usuario", USUARIO);
conexaoMySQL.Open();
int i = Convert.ToInt16(cmd.ExecuteScalar());
if (i == 0)
{
string _mSQL = "INSERT into funcionarios(NOME,APELIDO,CPF,CARGO,TELEFONE,CELULAR,USUARIO,SENHA) Values('" + _funcionario.NOME + "','" + _funcionario.APELIDO + "','" +
_funcionario.CPF + "','" + _funcionario.CARGO + "','" + _funcionario.TELEFONE + "','" + _funcionario.CELULAR + "','" + _funcionario.USUARIO + "','" + _funcionario.SENHA + "')";
MySqlCommand _cmd = new MySqlCommand(_mSQL, conexaoMySQL);
cmd.ExecuteNonQuery();
erro.SetError(caixa, "");
MessageBox.Show("Cadastro realizado com sucesso");
}
if (i > 0)
{
conexaoMySQL.Close();
erro.SetError(caixa, "Já existe um usuario");
}
}
catch (MySqlException _erro)
{
MessageBox.Show("Erro ao cadastra:" + _erro);
}
//
finally
{
conexaoMySQL.Close();
}
}
}
Raniel Gomes
Curtidas 0
Respostas
Pjava
13/01/2014
Não sei se é isso, mas você está passando uma aspa simples para o banco(','). Isso fará com que ele interprete como um valor para o campo e não separador de campos. Deveria retorna um erro tipo, você passou mais valore que a quantidade de campos, mas também como vc disse não dá erro. Capture a query e execute-a no banco diretamente e veja se dá algum tipo de erro ou se insere dados. Uma coisa observei. Você está passando os valores direto para a query. Dê uma lida sobre injeção de sql. Passe por parâmetros, exatamente como você fez na query de consulta, a primeira antes do insert. Faça isso, é mais bonito e limpo seu código. Tire a aspa simples da vírgula e passe assim(passaria via parâmetroe).
value(" " + minhaclasse.meuvalor + "," + minhaclasse.outrovalor.........
value(" " + minhaclasse.meuvalor + "," + minhaclasse.outrovalor.........
GOSTEI 0
Leandro Chiodini
13/01/2014
Bom dia,
Amigo, primeiramente a dica que eu dou , tente deixar o codigo mais limpo, principalmente nas strigns de comandos,
para facilitar depois a tua vida na conferencia de possiveis erros.
que tal trocar o jeito que esta sendo feito por algo assim.
ATt,
Chiodini
Amigo, primeiramente a dica que eu dou , tente deixar o codigo mais limpo, principalmente nas strigns de comandos,
para facilitar depois a tua vida na conferencia de possiveis erros.
que tal trocar o jeito que esta sendo feito por algo assim.
MySqlCommand command = new MySqlCommand();
string _mSQL = "INSERT into funcionarios(NOME,APELIDO,CPF,CARGO,TELEFONE,CELULAR,USUARIO,SENHA) Values('@NOME','@APELIDO','@CPF','@CARGO','@TELEFONE','@CELULAR','@USUARIO','@SENHA')";
command.CommandText = SQL;
command.Parameters.Add("@NOME", _userName);
command.Parameters.Add("@APELIDO", _apelido);
command.Parameters.Add("@CPF", _cpf);
command.Parameters.Add("@CARGO", _cargo);
command.Parameters.Add("@TELEFONE", _telefone);
command.Parameters.Add("@CELULAR", _celular);
command.Parameters.Add("@USUARIO", _usuario);
command.Parameters.Add("@SENHA", _senha);
...
ATt,
Chiodini
GOSTEI 0
Raniel Gomes
13/01/2014
Não sei se é isso, mas você está passando uma aspa simples para o banco(','). Isso fará com que ele interprete como um valor para o campo e não separador de campos. Deveria retorna um erro tipo, você passou mais valore que a quantidade de campos, mas também como vc disse não dá erro. Capture a query e execute-a no banco diretamente e veja se dá algum tipo de erro ou se insere dados. Uma coisa observei. Você está passando os valores direto para a query. Dê uma lida sobre injeção de sql. Passe por parâmetros, exatamente como você fez na query de consulta, a primeira antes do insert. Faça isso, é mais bonito e limpo seu código. Tire a aspa simples da vírgula e passe assim(passaria via parâmetroe).
value(" " + minhaclasse.meuvalor + "," + minhaclasse.outrovalor.........
value(" " + minhaclasse.meuvalor + "," + minhaclasse.outrovalor.........
Tá ok amigo chegar em casa irei testar, o código está meio feio porque estou tentando descobrir o erro mais pretendo melhorar o código, obrigado pela dica :D
GOSTEI 0
Raniel Gomes
13/01/2014
Bom dia,
Amigo, primeiramente a dica que eu dou , tente deixar o codigo mais limpo, principalmente nas strigns de comandos,
para facilitar depois a tua vida na conferencia de possiveis erros.
que tal trocar o jeito que esta sendo feito por algo assim.
ATt,
Chiodini
Amigo, primeiramente a dica que eu dou , tente deixar o codigo mais limpo, principalmente nas strigns de comandos,
para facilitar depois a tua vida na conferencia de possiveis erros.
que tal trocar o jeito que esta sendo feito por algo assim.
MySqlCommand command = new MySqlCommand();
string _mSQL = "INSERT into funcionarios(NOME,APELIDO,CPF,CARGO,TELEFONE,CELULAR,USUARIO,SENHA) Values('@NOME','@APELIDO','@CPF','@CARGO','@TELEFONE','@CELULAR','@USUARIO','@SENHA')";
command.CommandText = SQL;
command.Parameters.Add("@NOME", _userName);
command.Parameters.Add("@APELIDO", _apelido);
command.Parameters.Add("@CPF", _cpf);
command.Parameters.Add("@CARGO", _cargo);
command.Parameters.Add("@TELEFONE", _telefone);
command.Parameters.Add("@CELULAR", _celular);
command.Parameters.Add("@USUARIO", _usuario);
command.Parameters.Add("@SENHA", _senha);
...
ATt,
Chiodini
Obrigado pelas dicas amigos :-D
GOSTEI 0
Leandro Chiodini
13/01/2014
Mais uma diga
no teu if
Voce compara
if(i == 0)
{}
depois
if (i > 0)
Pra melhorar o codigo você pode colocar um Else antes do segundo IF, para ele soh comparar caso nao entrar no primeiro.
da forma que esta ele vai comparar os dois, mesmo entrando em um ou em outro.
att,
Chiodini
no teu if
Voce compara
if(i == 0)
{}
depois
if (i > 0)
Pra melhorar o codigo você pode colocar um Else antes do segundo IF, para ele soh comparar caso nao entrar no primeiro.
da forma que esta ele vai comparar os dois, mesmo entrando em um ou em outro.
att,
Chiodini
GOSTEI 0
Leandro Chiodini
13/01/2014
Agora falando sobre o teu problema
eu acredito que seja
pq neste caso de insert
ele nao esta fechando a conexao.
conexaoMySQL.Close();
essa instrução ta dentro do segundo IF
ou seja ele nao vai entrar e nao vai fechar a conexao..
tenta fechar a conexão no primeiro if tambem
que vai funcionar
valew
Chiodini
eu acredito que seja
pq neste caso de insert
ele nao esta fechando a conexao.
conexaoMySQL.Close();
essa instrução ta dentro do segundo IF
ou seja ele nao vai entrar e nao vai fechar a conexao..
tenta fechar a conexão no primeiro if tambem
que vai funcionar
valew
Chiodini
GOSTEI 0
Raniel Gomes
13/01/2014
Agora falando sobre o teu problema
eu acredito que seja
pq neste caso de insert
ele nao esta fechando a conexao.
conexaoMySQL.Close();
essa instrução ta dentro do segundo IF
ou seja ele nao vai entrar e nao vai fechar a conexao..
tenta fechar a conexão no primeiro if tambem
que vai funcionar
valew
Chiodini
eu acredito que seja
pq neste caso de insert
ele nao esta fechando a conexao.
conexaoMySQL.Close();
essa instrução ta dentro do segundo IF
ou seja ele nao vai entrar e nao vai fechar a conexao..
tenta fechar a conexão no primeiro if tambem
que vai funcionar
valew
Chiodini
Retirei as aspas, fechei a conexão no segundo IF, mas continua do mesmo jeito :(
GOSTEI 0
Raniel Gomes
13/01/2014
Desculpe no primeiro IF
GOSTEI 0
Raniel Gomes
13/01/2014
Conseguir resolver, claro com a ajuda de vocês amigos olha só como ficou o código atualizado:
public static void InserirFuncionario(Funcionario _funcionario, string USUARIO, ErrorProvider erro,ComponentFactory.Krypton.Toolkit.KryptonTextBox caixa)
{
using (MySqlConnection conexaoMySQL = clsBanco.getInstancia().getConexao())
{
try
{
string mSQL = "SELECT count(*) FROM FUNCIONARIOS WHERE USUARIO=@usuario";
MySqlCommand cmd = new MySqlCommand(mSQL, conexaoMySQL);
cmd.Parameters.AddWithValue("@usuario", USUARIO);
conexaoMySQL.Open();
int i = Convert.ToInt16(cmd.ExecuteScalar());
if (i == 0)
{
/*
string _userName = _funcionario.NOME;
string _apelido = _funcionario.APELIDO;
string _cpf = _funcionario.;
string _cargo = _funcionario.NOME;
string _telefone = _funcionario.NOME;
string _celular = _funcionario.NOME;
string _usuario = _funcionario.NOME;
string _senha = _funcionario.NOME;
*/
string msql = "INSERT into funcionarios(NOME,APELIDO,CPF,CARGO,TELEFONE,CELULAR,USUARIO,SENHA) Values(@NOME,@APELIDO,@CPF,@CARGO,@TELEFONE,@CELULAR,@USUARIO,@SENHA)";
MySqlCommand command = new MySqlCommand(msql, conexaoMySQL);
command.Parameters.AddWithValue("@NOME", _funcionario.NOME);
command.Parameters.AddWithValue("@APELIDO", _funcionario.APELIDO);
command.Parameters.AddWithValue("@CPF", _funcionario.CPF);
command.Parameters.AddWithValue("@CARGO", _funcionario.CARGO);
command.Parameters.AddWithValue("@TELEFONE", _funcionario.TELEFONE);
command.Parameters.AddWithValue("@CELULAR", _funcionario.CELULAR);
command.Parameters.AddWithValue("@USUARIO", _funcionario.USUARIO);
command.Parameters.AddWithValue("@SENHA", _funcionario.SENHA);
command.ExecuteNonQuery();
erro.SetError(caixa, "");
MessageBox.Show("Cadastro realizado com sucesso");
conexaoMySQL.Close();
}
if (i > 0)
{
conexaoMySQL.Close();
erro.SetError(caixa, "Já existe um usuario");
}
}
catch (MySqlException _erro)
{
MessageBox.Show("Erro ao cadastar:" + _erro);
}
//
finally
{
conexaoMySQL.Close();
}
}
}
MessageBox.Show("Obrigado a todos os amigos que colaboraram :D","Alerta")GOSTEI 0
Leandro Chiodini
13/01/2014
Rs.
Show de Bola...
Att,
Show de Bola...
Att,
GOSTEI 0
Raniel Gomes
13/01/2014
Vlw amigo obrigado.
GOSTEI 0