Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

UDSISTEMAS

[Resolvido] Como verificar se já há registro na base?

Recommended Posts

Olá pessoal, estou perdido.. tenho os dois métodos a baixo o de consulta (DAL) e o evento do botao na página .cs que estao funcionando porém consigo inserir dados iguais na base.

PRECISO VERIFICAR COM UM "if" acredito eu se já há registro na base e se tiver, me de uma mensagem.

 

 

SEGUE DAL:

public static List<OM.Ura.ClientAttendent> CheckIdAttendant(int? ClientAttendant)
       {
           string sql;
           sql = @"select * from [registration].[service].[client_attendant] WHERE id_client = @id_client";

           List<OM.Ura.ClientAttendent> objCliAttendants = new List<OM.Ura.ClientAttendent>();
           Database db = null;

           db = DatabaseFactory.CreateDatabase("Registration");
           DbCommand dbCommand = db.GetSqlStringCommand(sql.ToString());

           CreateParam(dbCommand, "@idAttendant", DbType.Int32, ClientAttendant == null ? (object)DBNull.Value : ClientAttendant);
           using (IDataReader dataReader = db.ExecuteReader(dbCommand))
           {
               while (dataReader.Read())
               {
                   OM.Ura.ClientAttendent objAttendant = new OM.Ura.ClientAttendent();
                   objAttendant.id_attendant = Convert.ToInt32(dataReader["id_attendant"]);
                   objCliAttendants.Add(objAttendant);                                         

               }
           }
           return objCliAttendants;
       }

 

 

SEGUE .CS:

 

protected void btnAddCli_Click(object sender, EventArgs e)
       {

           if (string.IsNullOrEmpty(TxtBoxClient.Text))
           {


               ShowAlert("Por favor, digite algo válido (Letras e Números).");
           }
           else
           {

               //Método que inclui mais de um item em uma textbox.
               string strData = TxtBoxClient.Text;
               string[] strSplitArr = strData.Split(',');

               string successClient = string.Empty;
               string erroClient = string.Empty;

               foreach (string arrStr in strSplitArr)
               {
                   Lib.OM.Ura.ClientAttendent clientAttendent = new Lib.OM.Ura.ClientAttendent();

                   int? idClient = Lib.BLL.Ura.GetIdClient(Convert.ToInt32(arrStr));

                   if (null != idClient)
                   {
                       clientAttendent.id_client = (int)idClient;

                       clientAttendent.id_attendant = Convert.ToInt32(DropDownAttedent.SelectedValue);

                       clientAttendent.id_group = null;

                       try
                       {
                           if (Lib.BLL.Ura.InsertClientAttendent(clientAttendent))
                               successClient = string.Concat(successClient, " , " + arrStr);
                       }
                       catch
                       {
                           erroClient = string.Concat(erroClient, " , " + arrStr);
                       }
                   }
               }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use como o Quintelab falou...

 

ALTER TABLE <NOME_DA_TABELA>
ADD CONSTRAINT <NOME_DA_CONSTRAINT> UNIQUE (<CAMPOS>)

 

Abaixo exemplo pratico

 

ALTER TABLE TB_GRUPO
ADD CONSTRAINT UQ_TBGRUPO_VARGRUPO UNIQUE(VAR_GRUPO)
GO

 

Uma outra coisa que você pode fazer é criar uma procedure para inserir e realizar uma verificação na procedure, como abaixo.

 

CREATE PROCEDURE SP_EXECUTA_PROCESSO 
@ID BIGINT,
@FLG_RETORNO INT OUTPUT
@ERRO_DESC VARCHAR(MAX) OUTPUT
AS

BEGIN TRY


BEGIN TRAN

IF NOT EXISTS(SELECT ID FROM MINHA_TABELA WHERE ID = @VARIAVEL)
BEGIN
	PRINT 'INSERT';
	--INSERT NA MINHA TABELA
END

COMMIT

END TRY
BEGIN CATCH

-- TRATA PROCESSOS DE ERRO			
SET @ERRO_ = CAST(@@ERROR AS VARCHAR(MAX));
SELECT @ERRO_DESC = ERROR_MESSAGE();
SET @ERRO_DESC = @ERRO_ +' - '+ @ERRO_DESC + ' - '+ @PROCESSO;

SET @FLG_RETORNO = 0				
ROLLBACK	

END CATCH

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.