Erro no metodo?

13/01/2014

0

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

Raniel Gomes

Responder

Posts

14/01/2014

Pjava

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

14/01/2014

Leandro Chiodini

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.

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
Responder

14/01/2014

Raniel Gomes

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


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
Responder

14/01/2014

Raniel Gomes

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.

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
Responder

14/01/2014

Leandro Chiodini

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
Responder

14/01/2014

Leandro Chiodini

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
Responder

14/01/2014

Raniel Gomes

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


Retirei as aspas, fechei a conexão no segundo IF, mas continua do mesmo jeito :(
Responder

14/01/2014

Raniel Gomes

Desculpe no primeiro IF
Responder

14/01/2014

Raniel Gomes

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")
Responder

15/01/2014

Leandro Chiodini

Rs.

Show de Bola...

Att,
Responder

15/01/2014

Raniel Gomes

Vlw amigo obrigado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar