Ilana_q 0 Denunciar post Postado Setembro 6, 2007 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
quintelab 91 Denunciar post Postado Setembro 6, 2007 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
Ilana_q 0 Denunciar post Postado Setembro 6, 2007 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
quintelab 91 Denunciar post Postado Setembro 6, 2007 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
Ilana_q 0 Denunciar post Postado Setembro 6, 2007 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
quintelab 91 Denunciar post Postado Setembro 6, 2007 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
Ilana_q 0 Denunciar post Postado Setembro 10, 2007 olá!Tentei utilizar esse código mas não deu muito certo. Vou continuar procurando. Memo assim, muito obrigada!!!! Compartilhar este post Link para o post Compartilhar em outros sites