Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Spiegazione

  1. #1
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908

    Spiegazione

    Qualcuno sarebbe così gentile da spiegarmi per bene questo codice:

    codice:
    <%@Import Namespace="System.Data.OleDb"%>
    <%@Import Namespace="System.Data"%>
    <%@ Page Language="vb" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    	<HEAD>
    		<title>Query Parametrica</title>
    		<script runat="server">
            Dim Conn as new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;" & _
            "Data Source=c:\Dev\banking.mdb")
            Sub GetData(obj as object, e as EventArgs)
            Dim objCmd as OleDbCommand = new OleDBCommand("Select * from tblUsers where UserId=@ID", conn)
            Dim objReader as OleDbDataReader
            Dim objParam as OleDbParameter
            
            objParam = objCmd.Parameters.add("@ID", OleDbType.Integer)
            objParam.Direction = ParameterDirection.Input
            objParam.Value = tbId.Text
            
            try
            objCmd.Connection.Open()
            objReader = objCmd.ExecuteReader
            catch ex as OleDbException
            Label1.Text = "Errore nel recupero dei dati"
            End Try        
            DataGrid1.DataSource = objReader
            DataGrid1.DataBind()
            objReader.Close
            objCmd.Connection.Close() 
            End Sub
    		</script>
    		<meta content="True" name="vs_showGrid">
    		<meta content="Microsoft Visual Studio.NET 7.0" name="GENERATOR">
    		<meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
    		<meta content="JavaScript" name="vs_defaultClientScript">
    		<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    	</HEAD>
    	<body MS_POSITIONING="GridLayout">
    		<form id="Form1" method="post" runat="server">
    			<asp:Label id="lbl1" style="Z-INDEX: 101; LEFT: 11px; POSITION: absolute; TOP: 16px" runat="server" Width="57px">Enter ID:</asp:Label>
    			<asp:TextBox id="tbId" style="Z-INDEX: 102; LEFT: 69px; POSITION: absolute; TOP: 13px" runat="server" Width="72px" OnTextChanged="GetData" AutoPostBack="True"></asp:TextBox>
    			<asp:DataGrid id="DataGrid1" style="Z-INDEX: 103; LEFT: 7px; POSITION: absolute; TOP: 39px" runat="server" Width="100%">
    				<HeaderStyle BackColor="ActiveBorder"></HeaderStyle>
    			</asp:DataGrid>
    			<asp:Label id="Label1" style="Z-INDEX: 104; LEFT: 12px; POSITION: absolute; TOP: 186px" runat="server" Width="418px"></asp:Label></form>
    	</body>
    </HTML>
    Fino alla creazione della connessione al Db è tutto ok, il fatto è che il resto non mi è chiarissimo! :incupito:
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  2. #2
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Niente?
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Mi sono riadattato il tuo codice per un mio database Access di prova
    Ho commentato il codice ma non credo che serva. Perchè, data la sua assoluta semplicità, se non capisci, è forse perchè non hai ancora le basi. Perciò ti consiglio senzaltro di STUDIARE

    Ciao

    codice:
    <%--
    Importo la spazio dei nomi opportuno
    Altrimenti non funziona
    --%>
    
    <%@Import Namespace="System.Data.OleDb"%>
    <%@Import Namespace="System.Data"%>
    <%@ Page Language="vb" %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
      <HEAD>
    		<title>Query Parametrica</title>
    		<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    		<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
      <script id="clientEventHandlersJS" language="javascript">
    <!--
    
    function window_onload() {
    	document.getElementById("tbId").focus();
    	document.getElementById("tbId").select();
    }
    
    //-->
    </script>
    </HEAD>
    	<body MS_POSITIONING="FlowLayout" language="javascript" onload="return window_onload()">
    		<form id="Form1" method="post" runat="server">
    			<asp:Label id="lbl1" style="Z-INDEX: 101; LEFT: 11px; POSITION: absolute; TOP: 16px" runat="server" Width="57px">Enter ID:</asp:Label>
    			<asp:TextBox id="tbId" style="Z-INDEX: 102; LEFT: 69px; POSITION: absolute; TOP: 13px" runat="server" Width="72px" OnTextChanged="GetData" AutoPostBack="True"></asp:TextBox>
    			<asp:DataGrid id="DataGrid1" style="Z-INDEX: 103; LEFT: 7px; POSITION: absolute; TOP: 39px" runat="server" Width="100%">
    				<HeaderStyle BackColor="ActiveBorder"></HeaderStyle>
    			</asp:DataGrid>
    			<asp:Label id="Label1" style="Z-INDEX: 104; LEFT: 12px; POSITION: absolute; TOP: 186px" runat="server" Width="418px"></asp:Label></form></FORM>
    	</body>
    </HTML>
    <script runat="server">
        'definisco una connessione mediante una stringa di connessione
        Private Conn As New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;" & "Data Source=C:\dati\test\test.mdb")
    
        Sub GetData(ByVal obj As Object, ByVal e As EventArgs)
            'definisco un Comando parametrizzato. Io utilizzo Access. Access non tiene conto del nome
            'del parametro, ma del suo ordine (devono essere valorizzati da sinistra a destra)
            Dim objCmd As OleDbCommand = New OleDbCommand("Select * from campi where [id] = ? ", Conn)
    
            Dim objReader As OleDbDataReader 'definisco una variabile reader
            Dim objParam As OleDbParameter 'definisco un parametro
    
            'aggiungo alla collezione dei parametri dell'oggetto Command un parametro di tipo intero
            '(il nome non importa (in access) ma la posizione
            objParam = objCmd.Parameters.Add("ID", OleDbType.Integer)
    
            'definisco la direzione (in access non serve e lo commento)
            'objParam.Direction = ParameterDirection.Input
    
            'imposto il value del parametro
            objParam.Value = tbId.Text
    
            'imposto il blocco try per gestire eventuali errori
            Try
                'apro la connessione
                objCmd.Connection.Open()
    
                'mi procuro il cursore Reader con l'apposito metodo ExecuteReader dell'oggetto Command
                objReader = objCmd.ExecuteReader
    
                'imposto la proprietà Sorgente dati della griglia col cursore Reader
                DataGrid1.DataSource = objReader
    
                'chiamo il metodo DataBind della griglia per recuperare i dati dal cursore e popolare la griglia
                DataGrid1.DataBind()
    
    
            Catch ex As OleDbException
                'messaggio di errore nella label
                Label1.Text = "Errore nel recupero dei dati"
    
            Finally
                'alla fine chiudo sempre e comunque il cursore Reader e la connessione
                Try
                    objReader.Close()
                    objCmd.Connection.Close()
                Catch ex As Exception
                    Label1.Text = "Errore nella chiusura della connessione"
                End Try
    
            End Try
    
    
        End Sub
    
    
    </script>
    Pietro

  4. #4
    io cambierei la gestione del parametro con una unica riga es.
    codice:
    objCmd.Parameters.Add("ID", OleDbType.Integer).Value = ctype(tbId.Text, integer)
    poi imposterei il datareader cosi
    codice:
    objReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection)
    e dopo il databind chiamerei
    codice:
    objReader.Close()
    a questo punto, per evitare rischi di lasciare la connection aperta a seguito di un errore, nel finally mi limiterei a chiudere la connection senza mettere un altro try annidato.
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Ok, grazie, continuerò a studiare!
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.