ASP .NET - Acessando o MySQL e exportando dados para um arquivo texto


Neste artigo vou mostrar como podemos exportar informações de tabelas do MySQL para um arquivo texto em uma aplicação ASP .NET Web Forms.

Hoje veremos como acessar um banco de dados MySql e exportar os dados de uma tabela selecionada para um arquivo texto em uma aplicação ASP .NET Web Forms.

Vamos acessar o banco de dados Northwind que exportamos do MS Access para o MySQL conforme instruções deste link: 6.4.1 Exporting Access Data to MySQL

Abaixo vemos o MySQL WorkBench exibindo as tabelas do banco de dados Northwind, e listando os dados da tabela Categories no MySQL:

Recursos usados:

Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.

Criando a solução no VS Community

Abra o VS Community 2015 e clique em New Project;

Selecione a linguagem Visual C# e o template ASP .NET Web Application;

Informe o nome ExportaDados e clique no botão OK;

A seguir escolha o template Empty e marque a opção Web Forms, sem autenticação nem hospedagem na nuvem:

Incluindo um novo Web Form no projeto e definindo a interface com o usuário

No menu Project clique em Add New Item;

Selecione o item Web Form e informe o nome Default.aspx.

Abra o arquivo Default.aspx e a partir da ToolBox inclua os seguintes controles no Web Form:

Na janela de propriedades do controle DropDownList clique na propriedade Items e defina os seguintes valores:

Esses valores referem-se aos nomes das tabelas existentes no banco de dados Northwind que exportamos para o MySQL.

O leiaute deverá ficar conforme mostra a figura abaixo:

O código gerado pode ser visto na opção Source :

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
Inherits="ExportarDados.Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .auto-style1 {
            color: #0000FF;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <h2 class="auto-style1">Macoratti .net</h2>
      <hr />
       Selecione a tabela : <asp:DropDownList ID="ddlTabelas" runat="server" Height="35px" Width="194px">
            <asp:ListItem>Customers</asp:ListItem>
            <asp:ListItem>Products</asp:ListItem>
            <asp:ListItem>Categories</asp:ListItem>
            <asp:ListItem>Orders</asp:ListItem>
            <asp:ListItem>Suppliers</asp:ListItem>
        </asp:DropDownList>
       <br />
       <asp:Button ID="btnExportar" runat="server" Text="Exportar dados para texto" OnClick="btnExportar_Click" />
    </div>
    </form>
</body>
</html>

Incluindo uma referência ao MySql Connector no projeto

No menu Tools selecione Nuget Package Manager e clique em Manage Nuget Packages for Solution.

A seguir selecione o item MySql.Data, marque o projeto e clique no botão Install:

Vamos agora definir a string de conexão com o banco de dados Northwind no arquivo Web.Config:

<?xml version="1.0" encoding="utf-8"?>
    ......
  <connectionStrings>
    <add name="conexaoMySql" connectionString="server=localhost;user id=root;password=******;
database=northwind" providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>
    ......
</configuration>

A conexão será identifica pelo nome : conexaoMySql.

Para poder acessar a informação da string de conexão neste arquivo devemos incluir uma referência no projeto ao namespace System.Configuration.

Criando o método para exportar os dados das tabelas

Agora vamos abrir o arquivo Default.aspx.cs, no code-behind, e criar um método chamado ExportarArquivoTexto() com o código abaixo:

  protected void ExportarArquivoTexto()
        {
            //obtem a string de conexão
            string constr = ConfigurationManager.ConnectionStrings["conexaoMySql"].ConnectionString;
            using (MySqlConnection con = new MySqlConnection(constr))
            {
                using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM " + ddlTabelas.Text))
                {
                    using (MySqlDataAdapter sda = new MySqlDataAdapter())
                    {
                        cmd.Connection = con;
                        sda.SelectCommand = cmd;
                        using (DataTable dt = new DataTable())
                        {   
                            //preenche o datatable
                            sda.Fill(dt);
                            //Constroi os dados do arquivo texto
                            string txt = string.Empty;
                            foreach (DataColumn column in dt.Columns)
                            {
                                //Incluir um linha de cabecalho
                                txt += column.ColumnName + "\t\t";
                            }
                            //Inclui uma nova linha
                            txt += "\r\n";
                            //percorre o datatable
                            foreach (DataRow row in dt.Rows)
                            {
                                foreach (DataColumn column in dt.Columns)
                                {
                                    //Inclui as linhas de dados
                                    txt += row[column.ColumnName].ToString() + "\t\t";
                                }
                                //Nova linha
                                txt += "\r\n";
                            }
                            //Faz o Download do arquivo texto
                            Response.Clear();
                            Response.Buffer = true;
                            Response.AddHeader("content-disposition", "attachment;filename=TabelaSqlTexto.txt");
                            Response.Charset = "";
                            Response.ContentType = "application/text";
                            Response.Output.Write(txt);
                            Response.Flush();
                            Response.End();
                        }
                    }
                }
            }
        }

O código esta comentado e acessa a tabela pelo nome informado exportando os dados para um arquivo texto.

Abaixo vemos a versão para VB .NET do método:

Protected Sub ExportarArquivoTexto()
	'obtem a string de conexão
	Dim constr As String = ConfigurationManager.ConnectionStrings("conexaoMySql").ConnectionString
	Using con As New MySqlConnection(constr)
		Using cmd As New MySqlCommand("SELECT * FROM " + ddlTabelas.Text)
			Using sda As New MySqlDataAdapter()
				cmd.Connection = con
				sda.SelectCommand = cmd
				Using dt As New DataTable()
					'preenche o datatable
					sda.Fill(dt)
					'Constroi os dados do arquivo texto
					Dim txt As String = String.Empty
					For Each column As DataColumn In dt.Columns
						'Incluir um linha de cabecalho
						txt += column.ColumnName + vbTab & vbTab
					Next
					'Inclui uma nova linha
					txt += vbCr & vbLf
					'percorre o datatable
					For Each row As DataRow In dt.Rows
						For Each column As DataColumn In dt.Columns
							'Inclui as linhas de dados
							txt += row(column.ColumnName).ToString() + vbTab
 & vbTab
						Next
						'Nova linha
						txt += vbCr & vbLf
					Next
					'Faz o Download do arquivo texto
					Response.Clear()
					Response.Buffer = True
					Response.AddHeader("content-disposition", 
"attachment;filename=TabelaMySqlTexto.txt")
					Response.Charset = ""
					Response.ContentType = "application/text"
					Response.Output.Write(txt)
					Response.Flush()
					Response.End()
				End Using
			End Using
		End Using
	End Using
End Sub

Agora vamos definir o código no evento Click do botão de comando - Exportar Dados para texto :

 protected void btnExportar_Click(object sender, EventArgs e)
  {
            if (!string.IsNullOrEmpty(ddlTabelas.Text))
            {
                ExportarArquivoTexto();
            }
 }

Este código apenas chama o método ExportarArquivoTexto() que irá usar o nome da tabela selecionada no dropdownlist.

Executando o projeto iremos obter:

Note que o arquivo texto é gerado com o nome TabelaMySqlTexto.txt e você pode fazer o download ou abrir o arquivo.

Abrindo o arquivo no bloco de notas veremos os dados da tabela Customers selecionada:

Pegue o projeto completo aqui: ExportarDados.zip (sem as referências)

Até o próximo artigo...

Porque pela graça sois salvos, por meio da fé; e isto não vem de vós, é dom de Deus.
Não vem das obras, para que ninguém se glorie;

Efésios 2:8,9

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

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti