Ir para conteúdo

POWERED BY:

Arquivado

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

Ilana_q

Mostrar aviso quando o usuário viola a chave primária

Recommended Posts

Estou fazendo um formulário em C# que insere dados em uma base MySQL.Ao inserir um valor já existente em um campo que possui chave primária, o programa para de rodar.Gostaria de fazer o C# verificar a base MySQL antes de inserir o dado, caso o mesmo viole achave primária, o aplicativo mostra um aviso e não deixa o usuário inserir a informação. Alguém sabe como fazer isso?[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é o jeito mais correto, mas uma forma de resolver isso seria fazer um select no campo pra ver se já existe este valor. Caso ele encontre é só mostrar a mensagem para o usuário. Alguns bancos tem uma forma de cadastrar os exception para devolver mensagens conforme o erro, mas não conheço MySql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei uma pesquisada na internet e vi que pessoal faz isso. Só que eu não consegui encontrar a sintaxe correta. Você tem algum exemplo de código, mesmo que acesse outro tipo de base de dados?Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos supor que seu campo chave chame "CODIGO". Basta:

 

SELECT COUNT(CODIGO) FROM SUA_TABELA WHERE CODIGO = 100

 

Caso já exista um registro na tabela com o código 100, o retorno do seu select será 1, caso o contrário seu retorno será 0.

Aí basta um criar a condição que caso o retorno seja 1 ou diferente de 0, mostrar a mensagem para o usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal! Não tinha pensado em fazer um COUNT.Mas ainda tem um probleminha: como sou iniciante em C#, não sei fazer essa busca. você sabe como faço o C# buscar e mostrar a quantidade de valores encontrados?Escrevi o código abaixo, mas não deu muito certo: string sqlStr = "SELECT COUNT(grupo) FROM tgrupo WHERE grupo = '"+ Grupo2.Text + "'"; OdbcConnection connection = new OdbcConnection (connStr2); connection.Open(); OdbcDataAdapter adapter = new OdbcDataAdapter( sqlStr, connection ); DataSet dS = new DataSet(); adapter.Fill ( dS, "tgrupo" ); DataRow foundRow = dS.Tables["tgrupo"].Rows.Find( Grupo2.Text ); if( foundRow != null ) { MessageBox.Show(foundRow[1].ToString()); } else { MessageBox.Show( "A row with the primary key of " + Grupo2.Text + "could not be found"); }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendo muito de C#, mas peguei um exemplo no site da Microsoft e adaptei:

 

string sqlStr = "SELECT COUNT(grupo) FROM tgrupo WHERE grupo = '"+ Grupo2.Text + "'";
  OleDbConnection conexao = new OledbConnection("ConnectionString");
  OleDbCommand comando = new OledbCommand(sqlStr, conexao);
  OledbDataReader dr = null;
  try{
	 conexao.Open();
	 dr = comando.ExecuteReader();
	 If (dr.Read()){
		if (Dr.Item("COUNT") != 0) { 
		  //Mostra Mensagem
		} 
	 }
  }
  catch{
	 Console.WriteLine("Ocorreu um Erro.");
  }
  finally{
	 dr.Close();
	 conexao.Close();
  }
}

Espero que de certo

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.