Tutorial C# – Inserção de dados em MySQL

Na sequência de tutoriais anteriores, em que demonstrei como efectuar ligações entre o C# e bases de dados, hoje irei mostrar como inserir dados numa base de dados MySQL. Apesar de a ligação C# – MySQL não ser a mais utilizada, visto o C# ser uma linguagem mais orientada para o ambiente Windows, e o MySQL orientado para a Web, irão poder verificar que não existe nenhum “segredo”, e é até bastante simples a inserção de dados.

Antes de começar a ler este tutorial, é muito importante que tenha compreendido o anterior tutorial relacionado com este tema (Tutorial C# – Ligação a Base de Dados MySQL), visto que os primeiros passos são iguais.

Primeiro criamos uma base de dados no phpMyAdmin. Neste caso criei a base de dados com o nome pplware_bd.

Esta base de dados, terá uma tabela com o nome tabela_dados, com três campos:

  • id (INT (5), AUTO_INCREMENT, Chave Primária)
  • titulo (VARCHAR(25))
  • descricao (VARCHAR(100))

Para que seja possível inserir dados numa base de dados MySql em C#, é necessário adicionar a referência MySql.Data. Para isso é necessário efectuar o download do mysql-connector-net-6.2.3. Depois é só correr o setup. (No fim é necessário reiniciar o Visual Studio)

Para adicionar uma referência:

  • Clicar com o botão direito em Referência e fazer “Add Reference”.

  • Seleccionar na lista MySql.Data no separador .NET

  • Como a referência já está adicionada, temos de a inserir no código.
using MySql.Data.MySqlClient;

Agora vamos ao código

1º – Temos de adicionar um MySqlConnection, MySqlDataAdapter e um DataSet.

private MySqlConnection mConn;
private MySqlDataAdapter mAdapter;
private DataSet mDataSet;

O MySqlConnection, MySqlDataAdapter e o DataSet, são necessários para a conexão e leitura da base de dados.

2º – Criar o “layout” da mini aplicação.

3º – Código do botão “Gravar”

private void bt_Gravar_Click(object sender, EventArgs e)
{
	// Início da Conexão com indicação de qual o servidor, nome de base de dados e utilizar
 
	/* É aconselhável criar um utilizador com password. Para acrescentar a password é somente
	necessário acrescentar o seguinte código a seguir ao uid=root;password=xxxxx*/
 
	mConn = new MySqlConnection("Persist Security Info=False; server=localhost;database=pplware_bd;uid=root");
 
	// Abre a conexão
	mConn.Open();
 
	//Query SQL
	MySqlCommand command = new MySqlCommand("INSERT INTO tabela_dados (titulo,descricao)"+
	"VALUES('" + tb_titulo.Text + "','" + tb_descricao.Text + "')", mConn);
 
	//Executa a Query SQL
	command.ExecuteNonQuery();
 
	// Fecha a conexão
	mConn.Close();
 
	//Mensagem de Sucesso
	MessageBox.Show("Gravado com Sucesso!","Informação",MessageBoxButtons.OK,MessageBoxIcon.Information);
 
	// Método criado para que quando o registo é gravado, automaticamente a dataGridView efectue um "Refresh"
	mostraResultados();
}

4º – Código do método de visualização de dados

private void mostraResultados()
{
	mDataSet = new DataSet();
	mConn = new MySqlConnection("Persist Security Info=False; server=localhost;database=pplware_bd;uid=root");
    mConn.Open();
 
    //cria um adapter utilizando a instrução SQL para aceder à tabela
    mAdapter = new MySqlDataAdapter("SELECT * FROM tabela_dados ORDER BY id", mConn);
 
    //preenche o dataset através do adapter
    mAdapter.Fill(mDataSet, "tabela_dados");
 
    //atribui o resultado à propriedade DataSource da dataGridView
    dataGridView1.DataSource = mDataSet;
    dataGridView1.DataMember = "tabela_dados";
}

Este método será “chamado” no botão Visualizar, como exemplificado na imagem abaixo.

private void bt_visualizar_Click(object sender, EventArgs e)
{
	mostraResultados();
}

E o resultado será:

E assim finalizamos este tutorial.

Como certamente verificaram, é extremamente simples fazer uma ligação e inserção com MySQL utilizando C#.
Espero que tenham gostado.

Download: Mysql Connector Net (6.2.3)
Homepage: MySql

  
     Pin It  

Arquivado na categoria: CSharp, Tutoriais


23 Comentários

  1. Muito bom, obrigado pela dica.

  2. Usem LINQ, é a melhor forma de ler e escrever numa base de dados…

  3. @OFF TOPIC

    Boas, será que alguém poderia fazer um review do Folio 100 da Toshiba, gostava de ver comparações com outros do mesmo sector.

    Obrigado.

  4. Viva,

    Desde já louvo a iniciativa de fazer estes tutoriais, que apesar de serem coisas simples, existem poucos sites que demonstrem com exemplos práticos e objectivos como fazer as coisas, dando uma boa base para se entender e desenvolver para algo mais complexo.
    No entanto quero aqui assinalar algo que se deverá ter em atenção, para evitar surpresas desagradáveis.
    Pela maneira como o código está feito, é permitida a situação de code-injection, através das text box, pelo que, um utilizador mais “espertinho”, poderia tentar inserir “exec sp_msforeachtable ‘drop table ?” nas text boxes e ao fim de algumas tentativas a BD estava limpa.
    Para evitar estas situações o melhor é usar na variável command a opção Parameters.Add em vez de ter a string de query “hard-coded”. Dessa forma o proprio MySQL valida o texto inserido pelo utilizador e bloqueia brincadeiras do tipo que referi atrás.
    No caso em concreto do exemplo, as probabilidades deste tipo de situações acontecerem são muito baixas, pois as text boxes são usadas para fazer inserts na BD, mas se fossem usadas para querys, então era quase certo que por esta via ia haver problemas.
    Espero que o meu comentário seja útil, servindo apenas para que use este tutorial (bastante bom, algo a que o PPLWARE já nos habituou ;) ) possa ter noção de como proteger a sua BD de uma maneira bastante simples.
    Bom trabalho, continuem assim.
    Um abraço

    • @Filipe

      Caro Filipe, o teu comentário é muito pertinente. De facto as regras de segurança não estão a 100%, mas por exemplo, um erro comum de segurança nas querys é utilizar o “select * from …”, deve ser sempre indicados quais os campos, por exemplo “select nome, descricao from …”. Neste tutorial também não foram colocados os “try e catch”, que são sempre necessários. O principal objectivo deste tutorial é mesmo fazer uma pequena demonstração de como fazer a ligação C# + MySQL. De qualquer forma, volto a frisar que o teu comentário é bastante pertinente.

      Cumprimentos,
      HM

      • Sugestao para proximo tutorial: uma versao melhorada e correcta de como inserir/seleccionar dados na base de dados.

        Nos dias de hoje, este tutorial so’ deve ser visto como o que nao se deve fazer. Isto tanto em C# com em qualquer outra linguagem.

        “Pau que nasce torto, dificilmente se indireita”

        Fiquem Bem!

        • Caro Ricardo,

          Não sei se tem seguido os tutoriais de C#, pois se os tiver a seguir irá reparar que os tutoriais têm sido introdutórios. Isto é, servem para explicar sobretudo conceitos básicos. Não estamos aqui para explicar aos “experts”, mas sim a pessoas que pretendam saber alguma coisa sobre C#.

          Sendo assim, desafio-o a fazer um tutorial de “uma versao melhorada e correcta de como inserir/seleccionar dados na base de dados.” Dessa forma iremos certamente ver o quanto entendido na área é, e a sua “critica” passa a ser construtiva, pois criticas destrutivas estão reservadas quase sempre para os ignorantes.

          Cumps.

          Hélio M

          • O facto de os tutoriais serem introdutorios nao significa que nao se possa comecar com a melhor forma de usar uma linguagem, principalmente quando se trata de SQL, que tem uma lista longa de problemas e falhas de seguranca.

            Por ter visto pessoal que comeca da forma mais “facil” e depois descobre que estao num poco, alguma das vezes, impossivel/dificil de sair, e’ que comentei, porque e’ preciso que quem veja este artigo (que tirando esta parte, esta’ perfeito) comece bem.

            Um expert em C# pode precisar de usar SQL e desta forma tem um tutorial que lhe da’ boas bases.

            Nao uso C# e os meus conhecimentos da linguagem sao principalmente da sintaxe e logica. No entanto, nao foi complicado fazer o mesmo no C#. Usei o mono para testar.

            “Tutorial”
            http://forum.pplware.com/showthread.php?tid=7698

            PS: Infelizmente, interpretaste mal o meu comentario. Os ignorantes nao sabem o problema que e’ nao escapar caracteres especiais nos select/insert/delete/etc. Neste caso, os que sabem e’ que criticam.

            Fiquem Bem!

  5. Muito bom este tutorial.

    Precisava mesmo de algo deste género, e já procurei em vários sitios. É a primeira vez que visito este site, e reparei que têm outros tutoriais.

    Acabaram de ganhar um novo “visitante”.

    JFilipe

  6. Usar try / catch não seria mau :)

  7. Boas,
    Nunca deves construir comandos SQL concatenando parâmetros vindos de textbox do interfaces, corres o risco de SQL Injection.

  8. Agora só faltava a parte da pesquisa para encontrar registos na base de dados….

  9. Tutorial 5*.
    Agora era seguir a onda dos comentários e fazer um tutorial sobre segurança em Base de dados … :P

  10. Muito bom o tutorial.

    Poderiam fazer mais deste género – C# + MySQL?

    Obrigado.

    Cumprimentos,
    AndreLC

  11. Alguém me pode direccionar para os próximos tutoriais:
    editar e remover . É que não estou a conseguir encontra-los e gostava muito de ter umas bases.

    Obrigado

Deixe o seu comentário

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. O autor deste site reserva-se, desde já, o direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.