ASP
.NET - Usando ObjectDataSource com MySQL para manutenção de dados
Neste artigo vamos acessar um banco de dados MySQL em um projeto ASP .NET usando ObjectDataSource.
|
Primeiro baixe a versão 5 MySQL Community Server , que é gratuito no sítio: http://dev.mysql.com/downloads/
Em seguida baixe também o conector NET para a plataforma .NET em : http://dev.mysql.com/downloads/connector/net/5.2.html
A instalação padrão é muito simples, basta seguir as orientações do assistente. Recomendo alterar a senha do usuário root.
Agora baixe e instale o MySQL Administrator para administrar o servidor MySQL.
Vamos instalar também uma ferramenta gráfica para poder trabalhar com o MySQL para executar consultas e criar stored procedures: MySQL Query Browser
Obs: As duas últimas ferramentas são disponbilizadas em um único pacote em : http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-gui-tools-5.0-r12-win32.msi/from/pick
Haja download , mas em compensação
é tudo grátis...![]()
Após terminar a instalação de todas as ferramentas indicadas você pode conferir no Windows , Menu Iniciar -> Todos Programas a relação dos programas instalados:
![]() |
Criando o Banco de dados e as tabelas no MySQL
Agora execute o MySQL Administrator e abra o MySQL; se tudo foi realmente instalado corretamente você deverá obter o seguinte resultado:
![]() |
| Informando o usuário root e senha definida na etapa da instalação será aberta a janela abaixo: |
![]() |
Como padrão o MySQL apresenta um banco de dados Test. Selecionando o banco de dados vemos que não existe nenhuma tabela criada.
![]() |
Para criar um novo banco de dados clique sobre a área vazia que apresenta os schemas e selecione a opção Create New Schema;
![]() |
Vamos criar um banco de dados chamado Cadastro para usar como exemplo neste artigo. Digite o nome Cadastro e clique em OK para criar o banco de dados.
![]() |
![]() |
Agora que já temos o banco de dados vamos clicar no botão Create Table e definir a tabela Mensagens conforme abaixo:
![]() |
Clicando no botão Apply Changes será exibida o comando SQL para criação da tabela. Clique em Execute para gerar a tabela Mensagens.
![]() |
Agora vamos criar as stored procedures. Selecione a guia Stored Procedures e clique no botão Create PROCEDURE e informe o nome sp_DeletarMensagem para criar a stored procedure para excluir mensagens da tabela Mensagens;
![]() |
Usando o editor SQL digite o texto para criar a stored procedure que irá excluir mensagens da tabela Mensagens:
![]() |
Clicando no botão Execute SQL veremos a stored procedure exibida no MySQL Administrator:
![]() |
A seguir repita os passos acima para criar as demais stored procedures, vamos lá:
1- sp_InserirMensagem - Inclui uma mensagem na tabela Mensagens;

2- sp_AtualizarMensagem - Atualiza uma mensagem na tabela Mensagens;

3- sp_ListaMensagens - Exibe todas as mensagens da tabela Mensagens;
![]() |
Ao final teremos as stored procedures criadas e armazenadas no banco de dados Cadastro.

E com isso já criamos a infra-estrutura necessária para podermos criar nossa aplicação ASP .NET usando o ObjectDataSource com MySQL.
Criando o web site no Visual Web Developer 2008 Express
Abra o Visual Web Developer 2008 Express Edition e crie um novo web site chamado objDsMySQL;
Altere o nome do arquivo Default.aspx para Manutencao.aspx (ou se preferir deixe com o nome padrão).
Abra o arquivo web.config e defina a string de conexão conforme abaixo na seção <connectionStrings> :

|
A linha de comando
para a seção <connectionStrings> seria: aspnet_regiis -pef
connectionStrings. |
A próxima etapa é criar uma classe onde iremos definir os métodos que irão retornar os dados através do objeto ObjectDataSource;
Vamos criar duas classes:
1 - A classe MensagemItem
que irá representar a nossa mensagem e será usada para passar
os parâmetros para o controle ObjectDataSource;
2 - A classe acessoBD que irá efetuar o acesso
aos dados executando as stored procedures definidas;
No menu Web Site selecione a opção Add New Item e em Templates Class e informe o nome MensagemItem.vb; a classe será criada na pasta App_Code.
Digite o código para a classe MensagemItem conforme abaixo:
Imports Microsoft.VisualBasic
Public Class MensagemItem
Private _Codigo As Integer
Private _Mensagem As String
Private _Nome As String
Private _Email As String
Public Sub New()
End Sub
Public Property Codigo() As Integer
Get
Return _Codigo
End Get
Set(ByVal value As Integer)
_Codigo = value
End Set
End Property
Public Property Mensagem() As String
Get
Return _Mensagem
End Get
Set(ByVal value As String)
_Mensagem = value
End Set
End Property
Public Property Nome() As String
Get
Return _Nome
End Get
Set(ByVal value As String)
_Nome = value
End Set
End Property
Public Property Email() As String
Get
Return _Email
End Get
Set(ByVal value As String)
_Email = value
End Set
End Property
End Class
|
Na classe
MensagemItem criamos as propriedades :
representando cada um dos campos da tabela Mensagens.
|
Agora vamos criar outra classe chamada acessoBD que será responsável pelo acesso aos dados armazenados no MySQL.
No menu Web Site selecione a opção Add New Item e em Templates Class e informe o nome acessoBD.vb; a classe será criada na pasta App_Code.
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports MySql.Data.MySqlClient
Imports System.Configuration
Imports System.ComponentModel
<DataObject(True)> _
Public NotInheritable Class acessoBD
Private Sub New()
End Sub
Private Shared Function GetConnectionString() As String
Return ConfigurationManager.ConnectionStrings("MySQLConnectionString").ConnectionString
End Function
<DataObjectMethod(DataObjectMethodType.[Select])> _
Public Shared Function GetMensagems() As List(Of MensagemItem)
Dim cmd As New MySqlCommand("sp_ListaMensagens", New MySqlConnection(GetConnectionString()))
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection.Open()
Dim dr As MySqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Dim MensagemItemlist As New List(Of MensagemItem)()
While dr.Read()
Dim MensagemItem As New MensagemItem()
MensagemItem.Codigo = Convert.ToInt32(dr("Codigo"))
MensagemItem.Mensagem = Convert.ToString(dr("Mensagem"))
MensagemItem.Nome = Convert.ToString(dr("Nome"))
MensagemItem.Email = Convert.ToString(dr("Email"))
MensagemItemlist.Add(MensagemItem)
End While
dr.Close()
Return MensagemItemlist
End Function
<DataObjectMethod(DataObjectMethodType.Insert)> _
Public Shared Sub AddMensagem(ByVal MensagemItem As MensagemItem)
Dim cmd As New MySqlCommand("sp_InserirMensagem", New MySqlConnection(GetConnectionString()))
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New MySqlParameter("param1", MensagemItem.Nome))
cmd.Parameters.Add(New MySqlParameter("param2", MensagemItem.Email))
cmd.Parameters.Add(New MySqlParameter("param3", MensagemItem.Mensagem))
cmd.Connection.Open()
cmd.ExecuteNonQuery()
cmd.Connection.Close()
End Sub
<DataObjectMethod(DataObjectMethodType.Update)> _
Public Shared Function UpdateMensagem(ByVal MensagemItem As MensagemItem) As Integer
Dim cmd As New MySqlCommand("sp_AtualizarMensagem", New MySqlConnection(GetConnectionString()))
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New MySqlParameter("paramkey", MensagemItem.Codigo))
cmd.Parameters.Add(New MySqlParameter("param1", MensagemItem.Nome))
cmd.Parameters.Add(New MySqlParameter("param2", MensagemItem.Email))
cmd.Parameters.Add(New MySqlParameter("param3", MensagemItem.Mensagem))
cmd.Connection.Open()
Dim i As Integer = cmd.ExecuteNonQuery()
cmd.Connection.Close()
Return i
End Function
<DataObjectMethod(DataObjectMethodType.Delete)> _
Public Shared Function DeleteMensagem(ByVal MensagemItem As MensagemItem) As Integer
Dim cmd As New MySqlCommand("sp_DeletarMensagem", New MySqlConnection(GetConnectionString()))
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New MySqlParameter("param1", MensagemItem.Codigo))
cmd.Connection.Open()
Dim i As Integer = cmd.ExecuteNonQuery()
cmd.Connection.Close()
Return i
End Function
End Class
|
Para saber
mais sobre as operações comuns com banco de dados acompanhe os meus artigos :
Definimos 4 métodos na nossa classe acessoBD:
Observe que definimos os métodos usando o atributo DataObjectMethod() para identificar os métodos de dados criados desta forma a nossa classe identificada com este atributo faz com que o nosso componente também apareça no wizard quando a opção "Show only data components" estiver marcada; no nosso exemplo estamos indicando a finalidade de cada um :
A string de conexão esta sendo obtida a partir do arquivo web.config pelo método : GetConnectionString()
Vamos incluir a partir da ToolBox um controle GridView (ID= gdvMensagens) para realizar a edição e exclusão de mensagens e um controle DetailsView ( ID= dtvMensagens) para realizar a inclusão de mensagens na página Manutencao.aspx.
Abaixo temos o leiaute já definido para estes dois controles na página Manutencao.aspx;

Selecione o GridView e em GridView Tasks marque as opções Enable Editing e Enable Deleting;
![]() |
Vamos criar uma fonte de dados para o controle GridView. Selecione GridView Tasks e em Choose Data Source selecione <New Data Source>;
Na janela do assistente selecione o item Object e informe o nome objDSMenasgens e clique em OK;

Na janela Choose a Business Object selecione o nosso objeto de negócio, a classe acessoBD;
![]() |
Agora vamos definir os métodos para selecionar, atualizar , inserir e deletar dados. Em cada uma das abas clique na combo Choose a method e selecione o método que criamos na classe acessoBD. (Aqui é que funciona a identificação usando a classe DataObjectMethod feita anteriormente.)
![]() |
Após definição de cada um dos métodos clique em Finish.
Voltando para o nosso GridView podemos visualizar os campos usados e em CommandField vamos definir a aparência para o tipo Button em ButtonType e alterar o nome dos botões conforme a figura abaixo:

Selecione o DetailsView e em DetailsView Tasks marque as opções Enable Inserting;
![]() |
Agora ainda em DetailsView Task -> Choose a Data Source selecione o mesmo objectDataSource, objDSMensagens, que criamos nos passos anteriores para o GridView pois vamos tratar com a mesma tabela.
Ao final clique em Finish e configure o controle DetailsView para o modo de inclusão definindo sua propriedade DefaultMode para Insert;
Eu realizei pequenos ajustes transformando os campos Mensagem e Email para um TemplateField e em seguida em Edit Templates reconfigurando o controle TextBox conforme figura abaixo:
![]() |
Executando o projeto podemos visualizar a página Manutencao.aspx onde temos as funcionalidades de editar e deletar implementadas no GridView e de incluir no DetailsView;
![]() |
E com isso estamos acessando um banco de dados no MySQL e realizando as tarefas de manutenção da tabela Mensagens : incluindo, alterando , excluindo e listando dados.
Tudo isso em uma página ASP .NET usando o ObjectDataSource. (Poderíamos efetuar o mesmo procedimento com qualquer banco de dados.)
Pegue o projeto completo aqui :
objDSMensagens.zip
(sem o MySQL )
Eu sei é apenas ASP .NET mas eu gosto...
![]()
José Carlos Macoratti