ASP .NET - Acessando o MySQL


Que tal acessar uma tabela de um banco de dados MySQL e exibir os dados em uma página ASP.NET ?

Neste artigo vou mostrar como acessar tabelas em um banco de dados MySQL usando C#.

Para ter sucesso nesta empreitada você vai precisar dos seguintes componentes :

1-) O banco de dados MySQL 4.0 - download em - http://www.mysql.com/downloads/

2-) O driver ODBC para o MySQL - MySQL Connector/ODBC 3.51 - download em - http://www.mysql.com/downloads/api-myodbc-3.51.html

3-) Uma interface amigável para facilitar criar tabelas e inserir registros - MyTool.exe  - download  em -   http://www.icarz.com/mysql/

Opcionalmente se você quiser ter uma ferramenta para criar conexõe e administrar o MySQL pode pegar o MySQL Administrator - download - http://www.mysql.com/downloads/administrator.html

Supondo que você pegou o enxoval necessário , fez a instalação de cada um deles , e que tudo esta funcionando corretamente vamos para a próxima etapa.

Nota: Para permitir transações (embora neste exemplo eu não vou usá-las) você deve substituir o arquivo my.ini padrão pelo seguinte código : (para este artigo você pode usar o arquivo my.ini padrão)

[client]
port=3306

[mysqld]
port=3306
skip-locking
set-variable = max_connections=64
set-variable = read_buffer_size=1M
set-variable = key_buffer=8M
set-variable = max_allowed_packet=1M
set-variable = table_cache=64
set-variable = sort_buffer=512K
set-variable = net_buffer_length=8K
set-variable = myisam_sort_buffer_size=4M
server-id = 1

basedir = C:/MySQL/
datadir = C:/MySQL/data/

skip-bdb

innodb_data_file_path = ibdata1:10M:autoextend
set-variable = innodb_buffer_pool_size=32M
set-variable = innodb_additional_mem_pool_size=4M

set-variable = innodb_log_file_size=8M
set-variable = innodb_log_buffer_size=8M

innodb_flush_log_at_trx_commit=1

[mysqldump]
quick
set-variable = max_allowed_packet=8M

[mysql]
no-auto-rehash

[isamchk]
set-variable = key_buffer=10M
set-variable = sort_buffer=10M
set-variable = read_buffer=2M
set-variable = write_buffer=2M

[myisamchk]
set-variable = key_buffer=10M
set-variable = sort_buffer=10M
set-variable = read_buffer=2M
set-variable = write_buffer=2M

[mysqlhotcopy]
interactive-timeout

Neste arquivo estamos configurando o MySQL para iniciar o serviço : mysqld -max -nt.

Quando você instala o MySQL são criados dois banco de dados : mysql e test , conforme abaixo:

 

O banco de dados mysql já vem com algumas tabelas enquanto o banco de dados test vem vazio. Eu vou usar o banco de dados test e criar nele uma tabela chamada clientes com a seguinte instrução SQL :

Instrução SQL para criar a tabela Clientes no banco de dados test do MySQL:

CREATE TABLE Clientes (
Codigo INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Nome TINYTEXT NOT NULL,
Endereco TINYTEXT NOT NULL,
Telefone TINYTEXT NOT NULL,
Email TINYTEXT NOT NULL,
Nascimento TINYTEXT NOT NULL
);

Abaixo a figura exibindo a interface da ferramenta MyTool.exe onde podemos criar tabelas e inserir , deletar e atualizar registros no MySQL.

A seguir vamos incluir alguns registros na tabela usando a instrução SQL - INSERT INTO conforme mostrado na figura abaixo:

Abaixo a tabela Clientes com 3 registros incluídos.

O próximo passo é criar uma página ASP.NET , que no meu caso vai ser chamada de - MySQLNet.aspx . Para isto você pode usar o Visual Studio , mas eu vou usar o Web Matrix .

Inicie o Web Matrix (na combo Language escolha C#) e informe o nome da página conforme acima e na guia Design insira um componente DataGrid conforme a figura abaixo:(a configuração de cores e aparência do grid fica a seu critério)

O código para o DataGrid acima exibido na guia HTML é o seguinte :

<html>
<head>
<title>Exibindo registros da tabela 'Clientes' no MySQL</title> <style>BODY {
FONT: 100% Verdana
}
</style>
</head>
<body>
<p align="center">
<b>Registros na tabela Clientes do banco de dados Test do MySQL</b> :
</p>
<asp:DataGrid id="dgrAllNames" Runat="server" CellPadding="3" HorizontalAlign="Center" ForeColor="Blue" BackColor="#FFFFC0">
<FooterStyle backcolor="#FFE0C0"></FooterStyle>
<HeaderStyle forecolor="#0000C0" backcolor="#FFE0C0"></HeaderStyle>
</asp:DataGrid>
</body>
</html>

finalmente o script ASP.NET em C# exibido na guia Code:

private const string ConnStr = "Driver={MySQL ODBC 3.51 Driver};" +
"Server=localhost;Database=test;uid=root;pwd=;option=3";

protected override void OnInit(EventArgs e)
{
base.OnInit(e);

using(OdbcConnection con = new OdbcConnection(ConnStr))
using(OdbcCommand cmd = new OdbcCommand("SELECT * FROM clientes", con))
{
con.Open();
dgrAllNames.DataSource = cmd.ExecuteReader(
CommandBehavior.CloseConnection |
CommandBehavior.SingleResult);
dgrAllNames.DataBind();
}
}

Versão VB .NET

A versão do código acima para VB.NET , obtido no site - http://authors.aspalliance.com/aldotnet/examples/translate.aspx - é dada abaixo: (O código HTML praticamente não sofre alterações.)

Const ConnStr As String = "Driver={MySQL ODBC 3.51 Driver};" + "Server=localhost;Database=test;uid=root;pwd=;option=3"

Protected Overrides Sub OnInit(e As EventArgs)
MyBase.OnInit(e)

Dim con As New OdbcConnection(ConnStr)
Try
     Dim cmd As New OdbcCommand("SELECT * FROM clientes", con)
    Try
       con.Open()
       dgrAllNames.DataSource = cmd.ExecuteReader((CommandBehavior.CloseConnection Or CommandBehavior.SingleResult))
       dgrAllNames.DataBind()
    Finally
       cmd.Dispose()
     End Try
Finally
    con.Dispose()
End Try
End Sub 'OnInit

Abaixo o código completo da página MySQLNet.aspx

<%@ Page Language="C#" autoeventwireup="False" EnableSessionState="False" EnableViewState="False" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Odbc" %>
<script runat="server">

private const string ConnStr = "Driver={MySQL ODBC 3.51 Driver};" +
"Server=localhost;Database=test;uid=root;pwd=;option=3";

protected override void OnInit(EventArgs e)
{
base.OnInit(e);

using(OdbcConnection con = new OdbcConnection(ConnStr))
using(OdbcCommand cmd = new OdbcCommand("SELECT * FROM clientes", con))
{
con.Open();
dgrAllNames.DataSource = cmd.ExecuteReader(
CommandBehavior.CloseConnection |
CommandBehavior.SingleResult);
dgrAllNames.DataBind();
}
}

</script>
<html>
<head>
<title>Exibindo registros da tabela 'Clientes' no MySQL</title> <style>BODY {
FONT: 100% Verdana
}
</style>
</head>
<body>
<p align="center">
<b>Registros na tabela Clientes do banco de dados Test do MySQL</b> :
</p>
<asp:DataGrid id="dgrAllNames" Runat="server" CellPadding="3" HorizontalAlign="Center" ForeColor="Blue" BackColor="#FFFFC0">
<FooterStyle backcolor="#FFE0C0"></FooterStyle>
<HeaderStyle forecolor="#0000C0" backcolor="#FFE0C0"></HeaderStyle>
</asp:DataGrid>
</body>
</html>

Executando a página no próprio servidor Web Matrix teremos o resultado abaixo.

Acabamos de acessar um banco de dados MySQL e exibindo o resultado de uma consulta SQL em uma página ASP.NET com C# e VB.NET.

Até o próximo artigo ...

João 4:34 Disse-lhes Jesus: A minha comida é fazer a vontade daquele que me enviou, e completar a sua obra.

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti