ASP.Net com MySQL Connector/Net 6.2.5 Introdução Por questões de segurança, a ITM Networks agora trabalha com a política de segurança MediumTrust nos servidores Windows 2003 Server. Algumas versões do MySQL Connector/Net não funcionam com este tipo de política de segurança. Por esta razão a versão que deve ser utilizada é a 6.2.5 a qual foi testada e homologada para uso em nossos servidores. Criando uma aplicação ASP.Net no Net FrameWork 4.0 com MySQL Abra a aplicação configurada para o Net FrameWork 4.0 seguindo os passos: 1) Abra o Visual Studio. Clique em File > Open > Web Site
2) Ao lado esquerdo, clique sobre Local IIS, clique sobre o web site (neste exemplo nomeado MYSQL) e, em seguida, clique no botão Open 3) Com o site já aberto no Visual Studio, clique com o botão direito do mouse sobre o site conforme a figura abaixo. Em seguida clique em Add ASP.NET Folder > App_Code. Nesta pasta ficarão os arquivos contendo classes de acesso a dados.
4) Repita o procedimento acima, mas desta vez, escolha a pasta Bin. Nesta pasta ficarão os assemblies utilizado no projeto. 5) Clique com o botão direito no website. Em seguida clique sobre Add New Item...
6)Após o passo 5, a tela abaixo será exibida. Clique sobre Web Configuration File, depois em Add. Este arquivo possuirá configurações globais do website baseadas em XML. 7) Repita o procedimento da tela 5. Em seguida clique em Class e no botão Add. Na caixa Name, informe no nome do arquivo MySQLConn.vb. Este arquivo será responsável por estabelecer a conexão ao servidor MySQL.
8)Repita o procedimento da tela 5. Em seguida clique em Class e no botão Add. Na caixa Name, informe no nome do arquivo ManipulaBD.vb. Este arquivo será terá métodos para manipulação de registros do banco MySQL.
Importando assemblies do MySQL Connector/Net 6.2.5 1) Vá até a pasta de instalação do MySQL Connector/Net 6.2.5. Marque os arquivos conforme abaixo segure e arraste para a pasta Bin do web site, conforme as telas abaixo:
Ajustando a string de conexão ao mysql no arquivo web.config 1) Adicione as linhas selecionadas conforme figura abaixo dentro do arquivo web.config. Ajuste as propriedades server, user id, password e database de acordo com seu servidor MySQL. Criando a classe para conexão ao servidor MySQL Expanda a pasta App_Code, e clique duas vezes sobre o arquivo MySQLConn.VB e ajuste-o com o código abaixo: Imports Microsoft.VisualBasic Imports MySql.Data.MySqlClient PublicClassMySQLConn Dim objmysqlconn AsNewMySqlConnection(ConfigurationManager.ConnectionStrings("MinhaString").ToString) 'Extrai a string de conexão mysql no Web.Config Function MySQLConn() AsMySqlConnection'Funcão retornando um objeto do tipo MySqlConnection EndFunction EndClass MySQLConn = objmysqlconn
Criando a classe para manipulação de registros do banco MySQL Expanda a pasta App_Code, e clique duas vezes sobre o arquivo ManipulaBD.VB e ajuste-o com o código abaixo: Imports Microsoft.VisualBasic ImportsSystem.Data Imports MySql.Data.MySqlClient PublicClassManipulaBD DimobjConnAsNewMySQLConn'Cria um objeto derivado da classe MySQLConn DimobjMySqlCMDAsNewMySqlCommand'Cria um objeto do tipo MySqlCommand o qual armazena a instrução SQL DimobjMySqlREADERAsMySqlDataReader'Cria um objeto do tipo MysqlDataReader o qual lê as fileiras de uma tabela DimobjDTAsNewDataTable DimstrFnResultAsString'Variável armazena o retorno da função 'Insereregistros no banco mysql FunctionInsereRegistro(ByValstrNomeAsString, ByValstrEmailAsString) AsString Try objconn.mysqlconn.open() 'Abre a conexão com o banco de dados objmysqlcmd.connection = objconn.mysqlconn'associa o objmysqlcmd à conexão já aberta objmysqlcmd.commandtext = "insertinto contatos (nome,email) values (?nome,?email)"'ajusta a instrução SQL para inserir o registro objmysqlcmd.parameters.add("nome", MySqlDbType.VarChar, 45).Value = strnome'ajusta o valor do parametro nome objmysqlcmd.parameters.add("email", MySqlDbType.VarChar, 100).Value = stremail'ajusta o valor do parametro e-mail objmysqlcmd.executenonquery() 'Executa a instrução SQL strfnresult = "Registro inserido com sucesso!" CatchexAsException strfnresult = ex.tostring'caso ocorra erro, armazena a mensagem de saída no retorno da função Finally objconn.mysqlconn.close() EndTry ReturnstrFnResult EndFunction 'Retorna um DataTable com a fileira de registros FunctionListaRegistros() AsDataTable Try objconn.mysqlconn.open() 'Abre a conexão com o banco de dados objmysqlcmd.connection = objconn.mysqlconn'associa o objmysqlcmd à conexão já aberta objmysqlcmd.commandtext = "selectid,nome,emailfrom contatos orderby nome"'ajusta a instrução SQL para listar todos os registros
objmysqlreader = objmysqlcmd.executereader() 'Executa a instrução SQL e armazena a fileira de dados no objmysqlreader objdt.load(objmysqlreader) 'Preenche o datatable com a fileira do banco de dados CatchexAsException strfnresult = ex.tostring'caso ocorra erro, armazena a mensagem de saída no retorno da função Finally objconn.mysqlconn.close() EndTry ReturnobjDT EndFunction 'Apaga um registro com base no Id FunctionApagaRegistros(ByValintIdAsInteger) AsString Try objconn.mysqlconn.open() 'Abre a conexão com o banco de dados objmysqlcmd.connection = objconn.mysqlconn'associa o objmysqlcmd à conexão já aberta objmysqlcmd.commandtext = "deletefrom contatos where id=?id"'ajusta a instrução SQL para apagar um registro com base no Id objmysqlcmd.parameters.add("id", MySqlDbType.Int64, Nothing).Value = intid'ajusta o valor do parametro id objmysqlcmd.executenonquery() 'Executa a instrução SQL strfnresult = "Registro apagado com sucesso!" CatchexAsException strfnresult = ex.tostring'caso ocorra erro, armazena a mensagem de saída no retorno da função Finally objconn.mysqlconn.close() EndTry ReturnstrFnResult EndFunction Criação dos webforms
1) Adicione ao Web Site, os arquivos conforme mostrados nas telas abaixo:
Para cada um dos arquivos IncluirRegistro.aspx, ApagarRegistros.aspx e ListarRegistros.aspx. Existe um arquivo anexo, onde será codificado separadamente do conteúdo HTML. Este tipo de apresentação de arquivo é chamada de code-behind. Veja na tela abaixo: Abaixo, segue o conteúdo para cada um dos 3 pares de arquivos gerados: IncluirRegistro.aspx <%@PageLanguage="VB"AutoEventWireup="false"CodeFile="IncluirRegistro.aspx.vb"Inherits="Incluir Registro"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server"> <title></title> <styletype="text/css"> body { font-family:arial; font-size:12px }
.lbl-msgs { color:red; font-size:14px; }.require-field { color:red; font-weight:bold; } </style> </head> <body> <formid="form1"runat="server"> <asp:labelrunat="server"id="lblmsg"cssclass="lbl-msgs"></asp:label> <table> <tr> <td>nome</td> <td><asp:textboxid="txtnome"runat="server"></asp:textbox></td> <td><asp:requiredfieldvalidatorrunat="server"id="reqtxtnome"controltovalidate="txtnome"setfocu sonerror="true"cssclass="require-field"> - Informe o nome</asp:requiredfieldvalidator></td> </tr> <tr> <td>e-mail</td> <td><asp:textboxid="txtemail"runat="server"></asp:textbox></td> <td><asp:requiredfieldvalidatorrunat="server"id="reqtxtemail"controltovalidate="txtemail"setfo cusonerror="true"cssclass="require-field"> - Informe o e- mail</asp:requiredfieldvalidator></td> </tr> <tr> <td> </td> <td><asp:buttonid="btnincluir"runat="server"text="inserirregistro"/></td> </tr> </table> </form><br/><br/> <ahref="listarregistros.aspx">ir para a lista de registros</a> </body> </html> IncluirRegistro.aspx.vb PartialClassIncluirRegistro InheritsSystem.Web.UI.Page DimobjBDAsNewManipulaBD'Cria um objeto do tipo ManipulaBD onde há classes para manipulação da tabela 'contatos' DimstrFnResultAsString'Variável armazena o retorno do processamento da função ProtectedSubbtnIncluir_Click(ByValsenderAsObject, ByVal e AsSystem.EventArgs) HandlesbtnIncluir.Click'Evento é executado quando clicar no botão Incluir registro strfnresult = objbd.insereregistro(txtnome.text, txtemail.text) 'Insere registro no banco de dados através do método InsereRegistro da classe ManipulaBD lblmsg.text = strfnresult'exibe o resultado do processamento da função
'Limpa campos do formulário txtnome.text = "" txtemail.text = "" EndSub EndClass ApagarRegistros.aspx <%@PageLanguage="VB"AutoEventWireup="false"CodeFile="ApagarRegistros.aspx.vb"Inherits="ApagarR egistros"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server"> <title></title> <styletype="text/css"> body { font-family:arial; font-size:12px }.lbl-msgs { color:red; font-size:14px; } </style> </head> <body> <asp:labelid="lblmsg"runat="server"cssclass="lbl-msgs"></asp:label><br/><br/> <ahref="listarregistros.aspx">retornar à lista de registros</a> </body> </html> ApagarRegistros.aspx.vb PartialClassApagarRegistros InheritsSystem.Web.UI.Page DimobjBDAsNewManipulaBD'Cria um objeto do tipo ManipulaBD onde há classes para manipulação da tabela 'contatos' DimstrFnResultAsString'Variável armazena o retorno do processamento da função ProtectedSubPage_Load(ByVal sender AsObject, ByVal e AsSystem.EventArgs) HandlesMe.Load strfnresult = objbd.apagaregistros(request.querystring("id")) 'Apaga 1 registro no banco de dados através do método ApagaRegistros da classe ManipulaBD LblMsg.Text = strfnresult'exibe o resultado do processamento da função EndSub
EndClass ListarRegistros.aspx <%@PageLanguage="VB"AutoEventWireup="false"CodeFile="ListarRegistros.aspx.vb"Inherits="ListarR egistros"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server"> <title></title> <styletype="text/css"> body { font-family:arial; font-size:12px } </style> </head> <body> <asp:repeaterrunat="server"id="rptcontatos"> <HeaderTemplate> <tableborder="1"> <tr><td>id</td><td>nome</td><tdcolspan="2">e-mail</td></tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#eval("id").tostring%></td><td><%#eval("nome").tostring%></td><td><%#eval("email").tostr ing%></td><td><ahref="apagarregitros.aspx?id=<%#eval("id").tostring%>">apagar</a></td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:repeater> <br/><br/> <ahref="incluirregistro.aspx">ir para a inclusão de registros</a> </body> </html> ListarRegistros.aspx.vb ImportsSystem.Data PartialClassListarRegistros InheritsSystem.Web.UI.Page DimobjBDAsNewManipulaBD'Cria um objeto do tipo ManipulaBD onde há classes para manipulação da tabela 'contatos' ProtectedSubPage_Load(ByVal sender AsObject, ByVal e AsSystem.EventArgs) HandlesMe.Load rptcontatos.datasource = objbd.listaregistros.defaultview'preenche o controle Repeater com o retorno da função ListaRegistros da Classe ManipulaBD rptcontatos.databind()
EndSub EndClass Compilando e transferindo sua aplicação via FTP 1) Clique como botão direito do mouse sobre o website, em seguida Publish Web Site. 2) Escolha uma pasta de destino conforme a tela abaixo e clique no botão OK. É recomendado deixar marcado a opção Use fixednamingand single pageassemblies. Desta forma o código fica fechado impedindo que seja
atualizado e gerando um número de arquivo desnecessário. 3) Transfira seu site compilado via FTP para a pasta virtual de sua escolha. Abaixo segue um exemplo: