Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    133

    VB - ODBC - Access - Query

    Rieccomi a voi. Stavo provando le query con i parametri, purtroppo non va, dove ho sbagliato? (non ditemi a usare VB e Access, lo so già).

    codice:
    Dim Rivista as Integer = 1
    
    Dim OdbcConn = New Data.Odbc.OdbcConnection
    OdbcConn.ConnectionString = System.Configuration.ConfigurationManager.AppSettings("connString")
    OdbcConn.Open()
    
    Dim Sql As String = "INSERT INTO [Y2Uscite] ([Rivista]) VALUE (@Rivista)"
    Dim Cmd As New Data.Odbc.OdbcCommand(Sql, OdbcConn)
    Cmd.Parameters.AddWithValue("@Rivista", Data.Odbc.OdbcType.Int).Value = Rivista
    Cmd.ExecuteNonQuery()
    Nella tabella Y2Uscite Rivista è Numerico - Intero lungo

    Ho provato anche la sistassi
    Cmd.Parameters.Add(New Data.Odbc.OdbcParameter("@Rivista", Rivista))

    Non riuscendo per ora a farlo andare vi chedo anche, per i campi "data" i delimitatori # li devo mettere io o si arrangia Parameter.add ?

    Lo stesso per i campi testo Replace(Stringa, "'", "''") si arrangia da solo o lo devo fare io e il testo lo devo delimitare da apici?

    Grazie anticipato per la risposta
    tomas

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    anche se non capisco l'uso di odbc, questo è un vecchio esercizio che scrive in un campo memo di Access e poi lo legge e lo mostra nello schermo

    pagina aspx
    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="ODBC aggiungo e leggo memo access.aspx.vb" Inherits="CorsoApogeo_wrox_gestione_dati_ODBC_aggiungo_e_leggo_memo_access" %>
    
    <!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">
        <title>Pagina senza titolo</title>
        <link href="../../../stili/Styles.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Scrivi e leggi Memo" />
            <hr />
            
            <div>
                <asp:Literal ID="Literal1" runat="server" EnableViewState="false"></asp:Literal>
            </div>
            
        </div>
        </form>
    </body>
    </html>
    codice
    codice:
    Option Strict On
    
    Partial Class CorsoApogeo_wrox_gestione_dati_ODBC_aggiungo_e_leggo_memo_access
        Inherits System.Web.UI.Page
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            'leggo un file di circa 250.000 caratteri
            Dim s As String = File.ReadAllText("C:\Documenti\Visual Studio 2005\Projects\libreria\libreria\ModuloWeb.vb")
    
            Dim connessione As Odbc.OdbcConnection = Nothing
            Dim comando As Odbc.OdbcCommand = Nothing
            Dim transazione As Odbc.OdbcTransaction = Nothing
            Dim sql As String = ""
            Try
    
                connessione = New Odbc.OdbcConnection(StringaConnessione)
                connessione.Open()
                transazione = connessione.BeginTransaction()
                comando = connessione.CreateCommand()
                comando.Transaction = transazione
                sql = "UPDATE [TABELLA12] SET [MEMO] = ? WHERE [ID] = ? "
                comando.CommandText = sql
                comando.Parameters.Clear()
    
                'la stringa immessa deve essere necessariamente tagliata, pena errore
                comando.Parameters.Add("memo", Odbc.OdbcType.VarChar, 65535).Value = s.Substring(0, 65535)
                comando.Parameters.Add("id", Odbc.OdbcType.SmallInt).Value = 1
                comando.ExecuteNonQuery()
                transazione.Commit()
    
                'adesso leggo il memo e lo metto nel literal
                sql = "SELECT [MEMO] FROM TABELLA12 WHERE [ID]=?"
                comando.CommandText = sql
                comando.Parameters.Clear()
                comando.Parameters.Add("id", Odbc.OdbcType.SmallInt).Value = 1
                Me.Literal1.Text = "<pre>" & comando.ExecuteScalar().ToString() & "</pre>"
    
    
            Catch ex As Exception
                Me.Literal1.Text = Server.HtmlEncode(ex.Message).Replace(vbNewLine, "
    ")
                If (transazione IsNot Nothing AndAlso transazione.Connection IsNot Nothing) Then transazione.Rollback()
    
            Finally
                If connessione IsNot Nothing Then connessione.Close()
            End Try
        End Sub
    
        Private Function StringaConnessione() As String
            Return "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\dati\test\test.mdb;Uid=Admin;Pwd=;"
        End Function
    End Class
    Pietro

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    133
    Grazie provo subito il tuo codice e cerco di capire dove ho sbagliato.
    Quando avrò esattamente definito quello che mi serve trasformo il tutto su DataBase Mysql, che non conosco. Leggendo le note del provider ho capito che il collegamento tra asp e mysql avverrà tramite ODBC, ho deciso quindi di connettermi ad access con ODBC e non OLEDB.
    Grazie mille ancora per i vari aiuti che mi dai.
    Tomas
    tomas

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    visto che ci sei correggo alcuni stralfacioni

    s.Substring(0, 65535) va sostituito con Left(s, 65535) altrimenti può andare in errore

    Me.Literal1.Text = "<pre>" & comando.ExecuteScalar().ToString() & "</pre>" va sostituito con

    Me.Literal1.Text = "<pre>" & Server.HtmlEncode(comando.ExecuteScalar().ToString ()) & "</pre>"

    naturalmente e cosa più importante, tutti i controlli server debbono avere:
    EnableViewState="false", pena un abnorme e inutile viewstate
    Pietro

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    codice:
    CorsoApogeo_wrox_gestione_dati_ODBC_aggiungo_e_leggo_memo_access
    complimenti per il nome della classe

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da djciko
    codice:
    CorsoApogeo_wrox_gestione_dati_ODBC_aggiungo_e_leggo_memo_access
    complimenti per il nome della classe
    visto che il merito non è mio, girerò i complimenti a visual studio


    ps. tutto è cominciato da quando ho comprato il mio primo libro su asp.net, del'Apogeo, per l'appunto
    Pietro

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    133
    Trovati 3 errori su 6 righe, questo vuol dire che 3 righe erano giuste

    1) VALUES e non VALUE

    2) L'argomento si segna con ? e non con @

    3) Il parametro non deve avere la @ iniziale

    codice:
    Dim Rivista as Integer = 1
    
    Dim OdbcConn = New Data.Odbc.OdbcConnection
    OdbcConn.ConnectionString = System.Configuration.ConfigurationManager.AppSettings("connString")
    OdbcConn.Open()
    
    Dim Sql As String = "INSERT INTO [Y2Uscite] ([Rivista]) VALUES (?)"
    Dim Cmd As New Data.Odbc.OdbcCommand(Sql, OdbcConn)
    Cmd.Parameters.AddWithValue("Rivista", Data.Odbc.OdbcType.Int).Value = Rivista
    Cmd.ExecuteNonQuery()
    Grazie ancora
    Tomas
    tomas

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.