ASP.NET
- Verificando dados antes de incluir
Quando você trabalhar com banco de dados é muito importante fazer a validação das informações que você esta gravando no banco de dados. Isto evita inconsistências e também trabalho inútil.
O objetivo deste artigo é mostrar como você pode verificar dados antes de incluir no banco de dados. Eu estou usando um banco de dados Access mas o princípio é o mesmo para qualquer gerenciador de banco de dados. Meu banco de dados é chamado de testeDB.mdb e possui a tabela Enderecos na qual eu desejo incluir os dados que são fornecidos pelo usuário em um formulário web em uma página ASP.NET
A estrutura da tabela Enderecos é a seguinte :
![]() |
Vou utilizar o WEB Matrix para criar o código do arquivo verificaDados.aspx . A estrutura visual da página no modo design é mostrado abaixo:
![]() |
O código do arquivo verificaDados.aspx é o seguinte :
<%@ Page Language="vb" Debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">
Dim blExistemLinhas as Boolean
'inclui dados na base de dadaos testeDb tabela : Enderecos
Sub inserirDados(Source as Object, E as EventArgs)
Dim strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("Dados\TesteDb.mdb")
Dim MyConn As OleDbConnection = New OleDbConnection(strConn)
Dim MySQL as string = "Select * from Enderecos where titulo=@titulo and link=@link"
Dim objDR as OleDbDataReader
Dim Cmd as New OleDbCommand(MySQL, MyConn)
With Cmd.Parameters
.Add(New OleDBParameter("@titulo", frmtitulo.text))
.Add(New OleDbParameter("@link", frmlink.text))
End With
MyConn.Open()
objDR=Cmd.ExecuteReader(system.data.CommandBehavior.CloseConnection)
if objDR.HasRows then
blExistemLinhas="True"
else
blExistemLinhas="False"
End If
MyConn.Close()
MySQL = "Insert into Enderecos (titulo, link, Descricao) Values (@titulo, @link, @Descricao)"
Dim Cmd2 as New OLeDbCommand(MySQL, MyConn)
With Cmd2.Parameters
.Add(New OleDbParameter("@titulo", frmtitulo.text))
.Add(New OleDbParameter("@link", frmlink.text))
.Add(New OleDbParameter("@Descricao", frmDescricao.text))
End With
if blExistemLinhas="False" then
MyConn.Open()
cmd2.ExecuteNonQuery()
lblResultados.text="Seus dados forma recebidos!"
MyConn.Close
exibeRegistros()
else
lblResultados.text="Este dado já existe no banco de dados"
End If
End Sub
'exibe os registros da base de dados em um datagrid
Sub exibeRegistros()
Dim strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("Dados\TesteDb.mdb")
Dim MyConn As OleDbConnection = New OleDbConnection(strConn)
Dim MySQL as string = "Select TOP 5 * from Enderecos order by ID desc"
Dim objDR as OleDbDataReader
Dim Cmd as New OleDbCommand(MySQL, MyConn)
With Cmd.Parameters
.Add(New OleDbParameter("@titulo", frmtitulo.text))
.Add(New OleDbParameter("@link", frmlink.text))
End With
MyConn.Open()
objDR=Cmd.ExecuteReader(system.data.CommandBehavior.CloseConnection)
MyDataGrid.DataSource=objDR
MyDataGrid.DataBind
MyConn.Close()
End Sub |
</script>
<html>
<head>
<title>Verificando dados antes de gravar</title>
</head>
<body>
<form id="form1" runat="server">
<div align="center"><img style="WIDTH: 239px; HEIGHT: 45px" height="32" src="maco1b.gif" width="233" border="0" />
<table style="WIDTH: 419px; HEIGHT: 114px">
<tbody>
<tr>
<td align="right">
<font face="Verdana" size="2">Título</font></td>
<td>
<asp:textbox id="frmtitulo" Runat="server" Text="Macoratti.net" Width="289px">
Macoratti.net</asp:textbox>
<font face="Verdana" size="2"></font></td>
</tr>
<tr>
<td align="right">
<font face="Verdana" size="2">Link</font></td>
<td>
<asp:textbox id="frmlink" Runat="server" Text="http://www.macoratti.net" Width="295px">
www.macoratti.net</asp:textbox>
<font face="Verdana" size="2"></font></td>
</tr>
<tr>
<td align="right">
<font face="Verdana" size="2">Descrição</font></td>
<td>
<asp:textbox id="frmDescricao" Runat="server" Width="296px">Tudo sobre VB e ASP</asp:textbox>
<font face="Verdana" size="2"></font></td>
</tr>
<tr>
<td align="right">
<font face="Verdana" size="2"></font></td>
<td>
<asp:button id="button1" onclick="inserirDados" Runat="server" Text="Enviar"></asp:button>
</td>
</tr>
</tbody>
</table>
</div>
<div align="center"><asp:Label id="lblResultados" runat="server" font-bold="True"></asp:Label>
</div>
<div align="center">
<asp:Datagrid id="MyDataGrid" Runat="server" Font-Size="X-Small" Font-Name="Arial" Headerstyle-Font-Size="8"
Headerstyle-Font-Name="Arial" Headerstyle-BackColor="#BDCFE7" Width="442px" Font-Names="Verdana" Height="129px">
<HeaderStyle font-size="8pt" font-names="Arial" backcolor="#BDCFE7"></HeaderStyle>
</asp:Datagrid>
</div>
</form>
</body>
</html>
|
O código VB.NET esta em amarelo e o código HTML em cinza.
Existem duas rotinas no código VB.NET :
exibirDados - que apenas exibe os dados , no caso os últimos 5 registros inseridos na tabela em um DataGrid
objDR=Cmd.ExecuteReader(system.data.CommandBehavior.CloseConnection)
MyDataGrid.DataSource=objDR
MyDataGrid.DataBind
MyConn.Close()
inserirDados - usando a instrução SQL INSERT INTO estamos primeiro fazendo a verificação usando o título e o link :
objDR=Cmd.ExecuteReader(system.data.CommandBehavior.CloseConnection)
if objDR.HasRows then
blExistemLinhas="True"
else
blExistemLinhas="False"
End If
Se conforme o resultado da variável lblExistemLinhas os dados são inseridos ou não conforme o código:
if blExistemLinhas="False" then
MyConn.Open()
cmd2.ExecuteNonQuery()
lblResultados.text="Seus dados forma recebidos!"
MyConn.Close
exibeRegistros()
else
lblResultados.text="Este dado já existe no banco de dados"
End If
O resultado de um inclusão pode ser visto na figura abaixo:
![]() |
Teste o programa on-line aqui : verificaDados.aspx
È
simples , é fácil é ASP.NET ...
José Carlos Macoratti