26/11/2009

Mostrar dados Mysql numa DataGridView em C#

final_c_sharp_mysql
Face a alguns solicitações criei um exemplo muito simples e rápido de como mostrar dados vindos do Mysql  numa DataGridView usando a linguagem c#.
Neste exemplo o objectivo vai ser apenas fazer uma Ligação há base de dados Mysql e devolver os dados de uma tabela e mostrar numa DataGridView.
Para começar certifique-se que tem instalado o conector Mysql para .net , se não o tiver vá á pagina do Mysql Connector/Net e faça o download do mesmo e a sua respectiva instalação.
Agora vamos cria o nosso projecto do tipo “Windows Forms Application” e acrescentamos uma classe que eu vou chamar “MysqlDataLayer”  mas o nome é o que entender esta classe vai servir para escrever as funções para conectar a base de dados e fazer a consulta sql a uma tabela.



De seguida vamos adicionar a referencia do conector Mysql .net ao nosso projecto ,basta para isso fazer clique com o terceiro botão na nossa árvore da  aplicação e escolher “Add Rerence..” como exemplificado na primeira imagem, será então aberta uma nova janela e no separador “.net” escolha o componente “MySql.Data” .
add_referencia_menu
add_referencia_mysql
Adicionada a referencia vamos então ao código e no código temos de criar uma ligação,fazer uma consulta a base de dados guardar os dados da consulta na num objecto e finalizar fechando a ligação e devolvendo os dados ,o código poderá ser algo do género:
class MysqlDataLayer    
   {     
       private MySqlConnection connection;     
       private string server;     
       private string database;     
       private string userName;     
       private string password; 
       public MysqlDataLayer(string server,string database,string userName,string password)    
       {     
           this.server =server;     
           this.database = database;     
           this.userName = userName;     
           this.password = password;     
           string connStr = String.Format("server={0};uid={1};pwd={2};database={3}", server, userName, password, database);     
           connection = new MySqlConnection(connStr); 
       }    
       /// <summary>     
       /// Abre Conecção com a base de dados     
       /// </summary>     
       /// <returns>True/False</returns>     
       private bool OpenConnection()     
       {     
           try     
           {     
               if (connection.State != ConnectionState.Open)     
                   connection.Open();     
               return true;     
           }     
           catch (MySqlException ex)     
           {     
               switch (ex.Number)     
               {     
                   case 0:     
                       MessageBox.Show("Não é possivel conectar com o servidor");     
                       break; 
                   case 1045:    
                       MessageBox.Show("Utilizador invalido verifique o username e/ou a password");     
                       break;     
               }     
               return false;     
           }     
       }     
       /// <summary>     
       /// Executa Comendo Sql de seleção de campos de uma tabela     
       /// </summary>     
       /// <param name="tabela">Nome da tabela a Selecionar</param>     
       /// <returns>DataTable com o resultado da Consulta</returns>     
       public System.Data.DataTable getDadosTabela(string tabela)     
       {     
           System.Data.DataTable dt = new System.Data.DataTable();     
           if (this.OpenConnection() == true)     
           {     
               try     
               {     
                   //Cria Comando Sql     
                   string selectCommand = string.Format("Select * from {0}", tabela);     
                   MySqlDataAdapter adapter = new MySqlDataAdapter(selectCommand, connection);     
                   dt = new System.Data.DataTable("Tabela");     
                   //Preenche a DataTable com os dados do adaptar     
                   adapter.Fill(dt);     
               }     
               catch (MySqlException ex)     
               {     
                   dt = null;               
                   MessageBox.Show(ex.Message);     
               }     
               finally     
               {     
                   //Fecho Connecção     
                   this.CloseConnection();     
               }     
           }     
           return dt;     
       }     
       /// <summary>     
       /// Fecha Coneção com a base de dados Mysql     
       /// </summary>     
       /// <returns></returns>     
       private bool CloseConnection()     
       {     
           try     
           {     
               if (connection.State == ConnectionState.Open)     
                   connection.Close();     
               return true;     
           }     
           catch (MySqlException ex)     
           {     
               MessageBox.Show(ex.Message);     
               return false;     
           }     
       } 
   }
Agora só nos falta acrecentar uma DataGridView ao nosso formulario inicial e a um butão cujo o evento click vai preencher a nossa dataGrid View :
private void btnMostraDados_Click(object sender, EventArgs e)    
{     
    MysqlDataLayer mysqlDL = new MysqlDataLayer("localhost", "geoip", "teste", "teste");     
    dataGridViewMysql.DataSource = mysqlDL.getDadosTabela("cc");     
}
No meu caso eu utilizei a mesma base de dados que no Mysql que pode fazer sacar neste Post e tenho um utilizador “teste” com a password também “teste” e faço pesquisa a tabela “cc”.
Download do Exemplo :

Sem comentários: