none
Verificar se ja existe um registo com o mesmo nome se nao houver ele regista RRS feed

  • Pergunta

  • Boas, preciso de Verificar se ja existe um registo com o mesmo nome se nao houver ele regista, o que posso mudar no codigo para que funcione?

     {

                    string sql1 = "Select count(*) from tutores where nomedotutor=@nomedotutortutor";
                    SqlConnection con1 = new SqlConnection(connectionString);
                    SqlCommand cmd1 = new SqlCommand(sql1, con1);
                    cmd1.Parameters.Add("@nomedotutor", SqlDbType.NVarChar).Value = txtutor.Text;

                    cmd1.CommandType = CommandType.Text;
                    con1.Open();
                    int i = cmd1.ExecuteNonQuery();

                    {

                        if (i < 0)
                            MessageBox.Show("Erro");

                    }


                   else

                    {
                        string sql = "(INSERT INTO tutores id_tutor, nomedotutor, morada, ncontribuinte,cp,email,telefone) VALUES (@id_tutor, @nomedotutor, @morada, @ncontribuinte,@cp,@email,@telefone)";

                        SqlConnection con = new SqlConnection(connectionString);
                        SqlCommand cmd = new SqlCommand(sql, con);
                        cmd.Parameters.Add("@id_tutor", SqlDbType.Int).Value = txtid.Text;
                        cmd.Parameters.Add("@nomedotutor", SqlDbType.NVarChar).Value = txtutor.Text;
                        cmd.Parameters.Add("@ncontribuinte", SqlDbType.NVarChar).Value = txtcontribuinte.Text;
                        cmd.Parameters.Add("@morada", SqlDbType.NVarChar).Value = txtmorada.Text;
                        cmd.Parameters.Add("@cp", SqlDbType.NVarChar).Value = txtcp.Text;
                        cmd.Parameters.Add("@email", SqlDbType.NVarChar).Value = txtemail.Text;
                        cmd.Parameters.Add("@telefone", SqlDbType.NVarChar).Value = txttlm.Text;
                        limparcaixas();
                        atualizardgv();

                        con.Open();
                        cmd.ExecuteNonQuery();

                    }



                    }
                }

                                                                              
    segunda-feira, 24 de junho de 2019 13:16

Todas as Respostas

  • Bom dia, já fez um debug para ver se a variável i está recebendo o valor correto?
    terça-feira, 25 de junho de 2019 13:20
  • Olá amigo,

    Faça isso via SQL!

    Segue exemplo

    /* PRIMEIRAMENTE, CRIAR A TABELA EXEMPLO */
    CREATE TABLE #TEMP(NOME VARCHAR(20))
    
    /* DECLARAR UMA VARIAVEL DE TESTE */
    DECLARE @NOME AS VARCHAR(20)
    SET @NOME = 'ALVESANDERSON'
    
    /* INSERIR DADOS */
    INSERT INTO #TEMP VALUES ('ANDERSON')
    INSERT INTO #TEMP VALUES ('BRUNO')
    
    IF(NOT  EXISTS (SELECT * FROM #TEMP WHERE NOME = @NOME)) BEGIN
    	INSERT INTO #TEMP VALUES (@NOME)
    END
    
    select * from #temp
    
    drop table #temp

    Sugiro o uso de procedures.

    Veja este link:

    https://docs.microsoft.com/pt-br/sql/t-sql/statements/create-procedure-transact-sql?view=sql-server-2017

    Abraços


    Se o meu conteúdo resolveu o seu problema ou sua dúvida, então marque como "Resposta", ou se foi útil, "Vote". Pois isso ajudará outras pessoas com o mesmo problema ou dúvida.


    terça-feira, 25 de junho de 2019 20:48
  • já, nao deu
    quarta-feira, 26 de junho de 2019 09:58
  • Preciso mesmo é do codigo para que funcione. Vlw
    quarta-feira, 26 de junho de 2019 09:59
  • Select count(*) from tutores where nomedotutor=@nomedotutortutor"

    caso vc tenha copiado o código, é assim mesmo no banco?
    quarta-feira, 26 de junho de 2019 11:55
  • O código esta assim, ja tentei de varias maneiras. Aqui ele vai sempre dar a mensagem de erro.

     {
                    string sql = "select count(*) from tutores where nomedotutor=@nomedotutor";

                    SqlConnection con = new SqlConnection(connectionString);
                    SqlCommand cmd = new SqlCommand(sql,con);
                    con.Open();        
                    cmd.Parameters.AddWithValue("@nomedotutor", SqlDbType.NVarChar).Value = txtutor.Text;
                    ra = cmd.ExecuteReader();
                    if (ra.Read())
                    
                    {
                        MessageBox.Show("Erro:");

                    }
                    else

                    {
                        string sql1 = "INSERT INTO tutores(id_tutor, nomedotutor, morada, ncontribuinte, cp, telefone, email) VALUES(@id_tutor, @nomedotutor, @morada, @ncontribuinte, @cp, @telefone, @email)";
                        SqlConnection con1 = new SqlConnection(connectionString);
                        SqlCommand cmd1 = new SqlCommand(sql1, con1);
                        con1.Open();
                        cmd1.Parameters.Add("@id_tutor", SqlDbType.Int).Value = txtid.Text;
                        cmd1.Parameters.Add("@nomedotutor", SqlDbType.NVarChar).Value = txtutor.Text;
                        cmd1.Parameters.Add("@ncontribuinte", SqlDbType.NVarChar).Value = txtcontribuinte.Text;
                        cmd1.Parameters.Add("@morada", SqlDbType.NVarChar).Value = txtmorada.Text;
                        cmd1.Parameters.Add("@cp", SqlDbType.NVarChar).Value = txtcp.Text;
                        cmd1.Parameters.Add("@email", SqlDbType.NVarChar).Value = txtemail.Text;
                        cmd1.Parameters.Add("@telefone", SqlDbType.NVarChar).Value = txttlm.Text;
                        MessageBox.Show("Registado");
                        cmd1.ExecuteNonQuery();
                        atualizardgv();
                        limparcaixas();
                        con1.Close();

                        

                    }


                    }
                }
            }

    quarta-feira, 26 de junho de 2019 13:23
  • Você precisa executar algo caso exista o registro na base? Ou somente emitir um alerta dizendo que já existe?

    Caso seja somente emitir um alerta, você poderia transformar a coluna "nomedotutor" como UNIQUE e caso o registro que estivesse inserindo já existisse será lançado uma exception e com isso você conseguiria tratar no try catch.

    quinta-feira, 27 de junho de 2019 19:11