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:
MySQL Connector (via Nuget)
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Exportando seus dados para diversos formatos - Macoratti.net
VB .NET - Importando e tratando arquivos CSV - Macoratti.net