Como executar Stored Procedures em MySQL utilizando Asp.Net?
Para utilizar StoredProcedures armazenadas em um banco de dados MySQL através de uma aplicação Asp.Net, primeiramente você deve certificar-se de que sua aplicação esteja devidamente configurada para o uso do MySQL.
Para isto, confira se realizou todas as configurações indicadas acessando nossa FAQ:
Como conectar ao MySQL utilizando Asp.Net?
http://ajuda.uolhost.com.br/index.php?ind=&p=resposta&res=1226
O uso de Stored Procedures implica em determinadas alterações no código de uma query SQL simples.
Na string de conexão com o banco de dados se faz necessário a inclusão do parâmetro "use procedure bodies=false".
É necessário também especificar que o comando a ser executado é uma stored procedure atribuindo esta definição ao parâmetro ‘CommandType’ do objeto ‘MySqlCommand’, conforme a linha abaixo:
command.CommandType = CommandType.StoredProcedure;
Para testar a execução de stored procedures em nossa estrutura, você pode utilizar o exemplo de código fornecido abaixo.
Crie um arquivo chamado StoredProcedure.aspx e inclua o código a seguir efetuando a substituição dos dados em destaque:
<%@ Page Language="C#"%>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="MySql.Data.MySqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
//[IMPORTANTE - INCLUSÃO DE DADOS]
// --- INFORME AQUI OS DADOS DE ACESSO AO BANCO ---
String SERVIDOR = "ENDEREÇO_OU_IP_DO_SERVIDOR";
String BANCO = "NOME_DO_BANCO";
String USUARIO = "NOME_DO_USUARIO";
String SENHA = "SENHA_DO_BANCO";
// ------------------------------------------------
//Limpando mensagem de erro para nova consulta
Label1.Text = "";
// Ocultando GridView
GridView1.Visible = false;
try
{
//Criando objeto MySqlConnection
MySqlConnection Conexao = new MySqlConnection("Database=" + BANCO + ";Data Source=" + SERVIDOR + ";User Id=" + USUARIO + ";Password=" + SENHA + "; pooling=false; use procedure bodies=false");
//Criando objeto MySqlDataAdapter
MySqlDataAdapter myAdapter = new MySqlDataAdapter();
// Cria objeto MySqlCommand
MySqlCommand command = new MySqlCommand();
// Atribui instância de MySqlConnection ao parâmetro connection do objeto MySqlCommand
command.Connection = Conexao;
// Define tipo de comando como Stored Procedure
command.CommandType = CommandType.StoredProcedure;
//[IMPORTANTE - INCLUSÃO DE DADOS]
// -----------------------------------------
command.CommandText = "NOME_DA_PROCEDURE"; // <----- INSIRA AQUI O NOME DA PROCEDURE
// -----------------------------------------
//[IMPORTANTE - INCLUSÃO DE DADOS]
// REPITA A LINHA ABAIXO PARA CADA PARÂMETRO A SER ENVIADO PARA A PROCEDURE. A CADA NOVA LINHA SUBSTITUA "?p1", POR "?p2" E SIGA ESTA SEQUÊNCIA PARA CADA NOVA LINHA.
command.Parameters.AddWithValue("?p1", "INSIRA_PARAMETRO"); // SUBSTITUIR "INSIRA_PARAMETRO" POR VALOR A SER ENVIADO COMO PARÂMETRO À PROCEDURE.
// CASO SUA PROCEDURE NÃO UTILIZE PARÂMETROS, EXCLUA A LINHA ACIMA.
// ---------------------------------------------------
//Efetuando conexão e executando procedure
myAdapter.SelectCommand = command;
//Criando objeto DataSet para trabalhar com os dados
DataSet dataset = new DataSet();
// Executa método de preenchimento
myAdapter.Fill(dataset);
//Atribuindo o Dataset ao Gridview
GridView1.DataSource = dataset.Tables["procedure"];
//Gravando conteúdo do Dataset no GridView
GridView1.DataBind();
// Mostrando o Gridview
GridView1.Visible = true;
//Fecha conexão com banco de dados e encerra objetos
dataset.Dispose();
myAdapter.Dispose();
Conexao.Close();
Conexao.Dispose();
}
catch (MySqlException erro)
{
//Caso ocorram erros, a linha abaixo mostra a mensagem de erro no label 1
Label1.Text = erro.Message;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Executar Procedure" />
<br />
<asp:Label ID="Label1" runat="server"></asp:Label>
<br />
<asp:GridView ID="GridView1" runat="server" EnableModelValidation="True">
</asp:GridView>
</div>
</form>
</body>
</html>
|