none
C# Postgres - Limpar cmd para nova execução RRS feed

  • Pergunta

  • Galera sou meio leigo ai com C# e BD, poderiam por favor me ajudar nessa questão?

    Criei uma classe Usuario e nela mesmo tem a opção de logar e tbm de criar. 

    Mas a questão é, eu validei pra vê se tem alguma pessoa com o mesmo user, caso contrário ele dará o comando pra criar esse user, mas gostaria de usar a mesma variavel "cmd" ao invés de ter que fechar a conexao e abrir novamente instanciando com o método construtor novamente mas com nova variavel "cmd2".

    Existe a possibilidade de limpar ou fechar o comando que dei com select ou até mesmo enviar novamente os 2 parametros, pois não estou achando.

    Código:

    public bool Inserir()
            {
                NpgsqlConnection conexao = null;
                try
                {
                    conexao = ConnectDB.GetConnection();
                    string sql = "select username, pass from login where username= '" + this.Login + "'";
                    NpgsqlCommand cmd = new NpgsqlCommand(sql, conexao);
    
                    NpgsqlDataReader dr = cmd.ExecuteReader();
                    string login = null;
                    if (dr.Read())
                    {
                        login = dr["username"].ToString();
                        if (this.Login == login)
                        {
                            return false;
                        }
    
                    }
                    else
                    {
                        sql = "insert into login(username,pass) values('" + this.Login + "','" + this.Password + "')";
                        cmd = new NpgsqlCommand(sql,conexao);
                        
                        cmd.ExecuteNonQuery();
                        return true;
                    }
                    return false;
                    
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    if (conexao != null)
                        conexao.Close();
                }
            }

    Pls ajudem ai. 

    sexta-feira, 9 de novembro de 2018 01:29

Respostas

  • Olá MurilloJro,

    Não sei em PostGres se existem, mas em sqlServer e sqlCe o Command tem estes métodos:

    comando.Parameters.Clear();//Limpa todos os parâmetros
    comando.CommandText.Remove(0);//Remove a query
    comando.Cancel();//Cancela o proprio Command

    comando.Dispose();//Libera todos os recursos que o command usou anteriormente

    Pode tentar verificar se um desses métodos existe no PostGres.

    Sucesso!

    • Marcado como Resposta MurilloJr0 sexta-feira, 9 de novembro de 2018 12:52
    sexta-feira, 9 de novembro de 2018 07:23

Todas as Respostas

  • Olá MurilloJro,

    Não sei em PostGres se existem, mas em sqlServer e sqlCe o Command tem estes métodos:

    comando.Parameters.Clear();//Limpa todos os parâmetros
    comando.CommandText.Remove(0);//Remove a query
    comando.Cancel();//Cancela o proprio Command

    comando.Dispose();//Libera todos os recursos que o command usou anteriormente

    Pode tentar verificar se um desses métodos existe no PostGres.

    Sucesso!

    • Marcado como Resposta MurilloJr0 sexta-feira, 9 de novembro de 2018 12:52
    sexta-feira, 9 de novembro de 2018 07:23
  • Muito obrigado Timóteo Nkawa, pelo conhecimento passado!

    Para eu utilizar novamente a instância eu limpei tbm o NpgsqDataReader pois estava em aberto e não permitiu eu instânciar novamente

    dr.Close();

    cmd = new NpgsqlCommand(sql,conexao);

    Agradeço pela resposta!


    • Editado MurilloJr0 sexta-feira, 9 de novembro de 2018 12:58
    sexta-feira, 9 de novembro de 2018 12:58