• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

slocun

como inserir dados na BD

3 mensagens neste tópico

Boas Pessoal!!

eu estou outra vez com problema na inserção de dados na BD.

estou a trabalhar em asp.net apartir do web developer do visual studio 2008 e o meu código começou a dar erro de novo, tentei alterar para corrigir mas nada, fico na esperança que alguém me possa dar uma ajudinha!

ponto de situação:    ---> a ligação com a BD já está feita, e sem problemas, penso k o erro é nas queries.

<%@ Page Language="VB" aspcompat=true Debug="true"%>
<configuration>
   <system.web>
       <compilation debug="true"/>
   </system.web>
</configuration>
<html>
<head>
<title>Inserir.aspx</title>
</head>
<body bgcolor="#B9DCFF" style="background-attachment: fixed">
<br>
<div align="center"><img border="0" src="file:///F:/ESTAGIO_TIAGO/access/gest.bmp" width="548" 
height="155"></div>
<%  Dim Conn, sSQL, RS, RX, xSQL, nome, telefone
    nome = Request.Form("nome")
    telefone = Request.Form("telefone")
    
    Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open("GestrofaBD")
    xSQL = "Select * From Cliente WHERE Nome = '" & nome & "' AND Telefone = '" & telefone & "'"
    RX = Conn.Execute(xSQL)
    If RX.eof Then
        sSQL = "INSERT INTO Cliente (Nome,Telefone) values ('" & nome & "', '" & telefone & "')"
        RS = Conn.Execute(sSQL)
    Else%>
        <html>Dados já existentes!<br>Nome ou Telefone já registados dentro da base de dados.</html>
    <%End If%>
<br>
<br>
<br>
<br>
<h1><div align="center">Registro Inserido</div></h1>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<div align="center">Clique <a href = "inserir.html">aqui</a> para voltar.</div>


<%
Conn.Close
%>
<body>
<html>

o erro é o seguinte:

[Microsoft][Controlador Microsoft Access de ODBC] Tipo de dados incorrecto na expressão de critérios.

Linha 17:    Conn.Open("GestrofaBD")

Linha 18:    xSQL = "Select * From Cliente WHERE Nome = '" & nome & "' AND Telefone = '" & telefone & "'"

Linha 19:    RX = Conn.Execute(xSQL)

Linha 20:    If RX.eof Then

Linha 21:        sSQL = "INSERT INTO Cliente (Nome,Telefone) values ('" & nome & "', '" & telefone & "')"

-------------------------------

eu já declarei a variavel telefone como "long" (dim telefone as long)

mas deu erro na mesma, embora à uns dias atras o erro seria esse e depois ao declara-la como long deixou de dar o erro, mas agora voltou e ja não sei porque...

agradeço toda a ajuda...

cumps! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual é o tipo do campo telefone na base de dados? Se for numérico, verifica que estás a receber apenas números no campo telefone do form.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

>> Server.CreateObject("ADODB.Connection")

O que é isto ? Vens do ASP classico não é verdada ? Não consideres isto uma critica mas o ASP.NET oferece formas muito mais simples, seguras e eficazes de manipular dados.

A minha sugestão é dares uma leitura no seguinte link: http://msdn2.microsoft.com/en-us/library/ms254937.aspx

Depois lê "Connecting to a Data Source (ADO.NET)" na secção OleDbConnection. Dá uma vista de olhos no exemplos de ExecuteNonQuery (para executar comandos com o nome indica não de query - selecção - como o INSERT, UPDATE e DELETE). Vê também como ler informação através do ExecuteReader - ai sim para ler informação).

Acho que vale a pena perderes um pouco e avançares para uma forma correcta de programar.

Exemplo do ExecuteNonQuery:

Using connection As New OleDbConnection(connectionString)
        Dim command As New OleDbCommand(insertSQL)
        command.Connection = connection

        Try
            connection.Open()
            command.ExecuteNonQuery()
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try

    End Using

Exemplo do ExecuteReader:

Dim queryString As String = "SELECT OrderID, CustomerID FROM Orders"
    Using connection As New OleDbConnection(connectionString)
        Dim command As New OleDbCommand(queryString, connection)

        connection.Open()

        Dim reader As OleDbDataReader = command.ExecuteReader()
        While reader.Read()
            Console.WriteLine(reader.GetInt32(0).ToString() + ", " _
               + reader.GetString(1))
        End While

        reader.Close()
    End Using

Nota: Isto aplicasse a .NET (ADO e WinForms)

jpaulino

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora