Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    insert into non funzionante

    Salve a tutti

    Sto provando a costruire il mio primo script in asp.net, solo che ho qualche problema...

    Ho scritto questo:
    codice:
    <%@ Page Language="VB" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <script runat="server">
            Sub Visualizza(ByVal obj As Object, ByVal e As EventArgs)
                Dim Conn As New OleDbConnection( _
                "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=C:\Documents and Settings\utente\Documenti\Visual Studio 2005\WebSites\mdb-database\sonda.mdb")
            
                Dim ds As New DataSet("MyDataSet")
                Dim objCmd As New OleDbDataAdapter("SELECT * FROM sondaggio", Conn)
                
                objCmd.Fill(ds, "sondaggio")
                
                objCmd.InsertCommand = New OleDbCommand
                objCmd.InsertCommand.CommandText = "Insert INTO sondaggio (voto) VALUE ('risposta.SelectedValue')"
                objCmd.InsertCommand.Connection = Conn
                objCmd.Update(ds, "sondaggio")
                
                vis.Text = "hai scelto la risposta: " & risposta.SelectedValue
            
            End Sub
            
            Sub Leggi(ByVal obj As Object, ByVal e As EventArgs)
                Dim objConn As New OleDbConnection( _
                 "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                 "Data Source=C:\Documents and Settings\utente\Documenti\Visual Studio 2005\WebSites\mdb-database\sonda.mdb")
                
                Dim objCmd As New OleDbCommand("SELECT voto FROM sondaggio", objConn)
            
                Dim objReader As OleDbDataReader
                
                objConn.Open()
                objReader = objCmd.ExecuteReader
                
                While objReader.Read
                    Response.Write(objReader.GetString(0) & "
    ")
                    
                End While
                objConn.Close()
            End Sub
        
        </script>
    
    
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <font face="arial" size="3pt">Domanda</font>
            <asp:RadioButtonList ID="risposta" runat="server">
                <asp:ListItem Text="Risposta 1" Value="a" />
                <asp:ListItem Text="Risposta 2" Value="b" />
                <asp:ListItem Text="Risposta 3" Value="c" />
                <asp:ListItem Text="Risposta 4" Value="d" />
            </asp:RadioButtonList>
    
        <asp:Button ID="Button1" onclick="Visualizza" runat="server" Text="Invia" />
        <asp:Button ID="Button2" onclick="Leggi" runat="server" Text="Leggi" />
        </div>
        </form>
        <asp:Label ID="vis" runat="server"></asp:Label>
        
    </body>
    </html>
    la lettura dei records nella colonna voto riesco a farla, ma non riesco ad aggiungere nessun dato con la SQL Insert INTO...

    perchè?

    Non mi da nessun errore, ma non scrive nemmeno.

    Grazie

  2. #2
    Quando hai necessita' di effettuare un singolo insert nel db, non c'e' bisogno di scomodare un dataadapter ne tantomeno un dataset.
    Quello che ti servirebbe nella sub visualizza (gli cambierei nome ad es. in "Inserisci") e' creare un oledbcommand, valorizzare la sua commandtext con l'sql necessario per l'inserimento, chiamare la sua funzione .executenonquery.
    Un es. di codice (occhio a eventuali errorucci)
    codice:
    Dim conn As New OleDbConnection("connstring")
    dim cmd as OleDbCommand 
    try 
    cmd = conn.CreateCommand 
    cmd.commandtext = "Insert INTO sondaggio (voto) VALUE (?)"
    cmd.parameters.add("?", OleDb.OleDbType.VarChar).value = risposta.SelectedValue 
    conn.Open
    cmd.executenonquery 
    vis.Text = "hai scelto la risposta: " & risposta.SelectedValue
    finally
    if not conn is nothing then conn.close
    end try
    Saluti a tutti
    Riccardo

  3. #3
    Mi da errore in:

    codice:
    cmd.ExecuteNonQuery()
    perchè?

    Poi volevo chiedere:
    lo script che ho postato inizialmente anche se "esagerato" per un singolo insert, è giusto oppure no? Questo script è solo un tentativo per iniziare a vedere come funziona asp.net e vorrei capire anche dove commetto eventuali errori.

    grazie

  4. #4
    Originariamente inviato da zipppo75
    Mi da errore in:
    si ma.... che errore?
    lo script che ho postato inizialmente anche se "esagerato" per un singolo insert, è giusto oppure no? Questo script è solo un tentativo per iniziare a vedere come funziona asp.net e vorrei capire anche dove commetto eventuali errori.
    e' sbagliato sia perche e' esagerato (perche' istanzi un dataset, lo riempi se poi non ti serve in alcun modo??) e sia perche usi male il dataadapter (la funzione update del dataadapter si usa quando l'utente modifica una "serie" di righe presenti in una datatable disconnessa dal db e poi in un colpo solo vengono cosi rese persistenti le modifiche nel db).
    Purtroppo (o per fortuna) Asp.net e ado.net non si imparano per tentativi (a differenza di quanto fosse semplice imparare a usare asp) ma con mesi di studio prima di iniziare a fare qualcosa di funzionante.
    Saluti a tutti
    Riccardo

  5. #5
    si ma.... che errore?
    ops:

    Server Error in '/' Application.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement.

    devo postare anche lo "Stack Trace:"?

    c.que:
    Purtroppo (o per fortuna) Asp.net e ado.net non si imparano per tentativi (a differenza di quanto fosse semplice imparare a usare asp) ma con mesi di studio prima di iniziare a fare qualcosa di funzionante.
    non sto cercando di imparare asp.net per tentativi... sto solo cercando di mettere in pratica quello che credo di aver capito dal manuale (ASP.NET guida completa). Ho capito che per il caso in questione il DataAdapter è esagerato, quello che non ho capito è se l'aggiornamento del db non avviene perchè io cerco di aggiornare una sola colonna (voto) anzichè per es. 10 colonne, oppure c'è un problema di sintassi.

  6. #6
    Originariamente inviato da zipppo75
    Syntax error in INSERT INTO statement.
    verifica in debug (non fidarti solo di quello che hai scritto nel codice) se la stringa che contiene lo statement sql passata al command e' corretta. Per farlo posiziona un breackpoint prima del comando executenonquery e nella finestra locals di visualstudio esamina la proprieta commandtext del command.
    non sto cercando di imparare asp.net per tentativi... sto solo cercando di mettere in pratica quello che credo di aver capito dal manuale (ASP.NET guida completa). Ho capito che per il caso in questione il DataAdapter è esagerato, quello che non ho capito è se l'aggiornamento del db non avviene perchè io cerco di aggiornare una sola colonna (voto) anzichè per es. 10 colonne, oppure c'è un problema di sintassi.
    scusa ma ho solo ripreso quello che tu stesso hai definito inizialmente un "tentativo".
    Possiamo anche cambiare termine cmq o il libro che hai letto e' una ciofeca oppure devi rileggere la parte relativa al dataadapter e alla funzione update. Ti ho accennato nel post precedente che si usa il dataadapter per rendere persistenti le modifiche fatte alle righe di una datatable nel db. Quando modifichi una datarow di una datatable (elimini, aggiungi, modifichi) il suo "stato" cambia e quando chiami la funzione update del dataadapter quest'ultimo legge gli stati di ogni datarow presente nella datatable e utilizza il deletecommand, updatecommand o insertcommand necessario. Quindi, puoi capire come nel tuo caso non solo e' esagerato usare un dataadapetr ma e' sbagliato in quanto non usi nessuna datatable.
    Saluti a tutti
    Riccardo

  7. #7
    allora, ho posizionato il breackpoint in:
    codice:
    cmd.CommandText = "Insert INTO sondaggio (voto) VALUE ('?')"
    giusto?
    Poi lancio il Debug e in Locals vedo sotto cmd il CommandText con una lente di ingrandimento. Cliccandoci sopra mi si apre una finatra con dentro: ""

    cosa significa?

  8. #8
    Il breackpoint devi posizionarlo dopo aver assegnato il valore altrimenti non vedi il risultato dell'assegnazione. Se lo posizioni prima, puoi comunque procedere passo passo nell'esecuzione utilizzando il tasto funzione adibito a tale scopo (a seconda delle impostazioni di vs potrebbe essere es. f8 o f11).
    Cmq, posta anche il codice della funzione che hai scritto.
    Saluti a tutti
    Riccardo

  9. #9
    ti posto tutto:

    codice:
    <%@ Page Language="VB" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <script runat="server">
            Sub Visualizza(ByVal obj As Object, ByVal e As EventArgs)
                Dim conn As New OleDbConnection( _
                 "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                 "Data Source=C:\Documents and Settings\utente\Documenti\Visual Studio 2005\WebSites\mdb-database\sonda.mdb")
                Dim cmd As OleDbCommand
                Try
                    cmd = conn.CreateCommand
                    cmd.CommandText = "Insert INTO sondaggio (voto) VALUE (?)"
                    cmd.Parameters.Add("?", OleDb.OleDbType.VarChar).Value = risposta.SelectedValue
                    conn.Open()
                    cmd.ExecuteNonQuery()
                    vis.Text = "hai scelto la risposta: " & risposta.SelectedValue
                Finally
                    If Not conn Is Nothing Then conn.Close()
                End Try
            
            End Sub
            
            Sub Leggi(ByVal obj As Object, ByVal e As EventArgs)
                Dim objConn As New OleDbConnection( _
                 "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                 "Data Source=C:\Documents and Settings\utente\Documenti\Visual Studio 2005\WebSites\mdb-database\sonda.mdb")
                
                Dim objCmd As New OleDbCommand("SELECT voto FROM sondaggio", objConn)
            
                Dim objReader As OleDbDataReader
                
                objConn.Open()
                objReader = objCmd.ExecuteReader
                
                While objReader.Read
                    Response.Write(objReader.GetString(0) & "
    ")
                    
                End While
                objConn.Close()
            End Sub
        
        </script>
    
    
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <font face="arial" size="3pt">Domanda</font>
            <asp:RadioButtonList ID="risposta" runat="server">
                <asp:ListItem Text="Risposta 1" Value="a" />
                <asp:ListItem Text="Risposta 2" Value="b" />
                <asp:ListItem Text="Risposta 3" Value="c" />
                <asp:ListItem Text="Risposta 4" Value="d" />
            </asp:RadioButtonList>
    
        <asp:Button ID="Button1" onclick="Visualizza" runat="server" Text="Invia" />
        <asp:Button ID="Button2" onclick="Leggi" runat="server" Text="Leggi" />
        </div>
        </form>
        <asp:Label ID="vis" runat="server"></asp:Label>
        
    </body>
    </html>

  10. #10
    Originariamente inviato da zipppo75
    ti posto tutto:
    VVoVe: argh... VALUES e non VALUE !!
    Se ti dico "...(occhio a eventuali errorucci)..." in effetti intendo proprio questi errori.
    Saluti a tutti
    Riccardo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.