Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    702

    Ado.Net Modalità connessa /disconnessa

    Ciao a tutti.

    Sono veramente alle primissime armi. Immaginatemi con caterve di libri di Asp.Net, alla disperata ricerca dell'apprendimento .

    Non riesco ad effettuare una banalissima connessione ad un DB Access (ovviamente, Northwind). Ovvero, riesco a farlo in modalità connessa, ma non in modalità disconnessa. Vi ammorbo con un pò di codice, ma pochissimo.

    Così si: :mavieni: :mavieni: :mavieni:

    Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\Giorno9\bin\Northwind.md b"
    Dim objConn As New OleDbConnection(strConn)

    objConn.Open()

    Dim strSql As String = "Select * From Clienti"
    Dim objCommand As New OleDbCommand(strSql, objConn)
    Dim objDataReader As OleDbDataReader
    objDataReader = objCommand.ExecuteReader(CommandBehavior.CloseConn ection)

    dg.DataSource = objDataReader
    dg.DataBind()

    Così no:

    Dim cnn As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0" & _
    "Data Source=C:\Inetpub\wwwroot\Giorno9\bin\Northwind.md b")
    cnn.Open()

    Dim da As New OleDbDataAdapter()
    Dim sql As String = "Select * From Prodotti"
    da.SelectCommand = New OleDbCommand(sql, cnn)

    Dim ds As DataSet = New DataSet()
    da.Fill(ds, "Prodotti")
    cnn.Close()

    Sapete indicarmene il motivo?

  2. #2

    Re: Ado.Net Modalità connessa /disconnessa

    Originariamente inviato da borgorosso
    cnn.Open()
    se usi un datadapter e' inutile aprire la connessione. Basta passare al dataadapter un oggetto connection valido dopo di che ci pensera' lui ad aprirla e a richiuderla.
    da.Fill(ds, "Prodotti")
    Sapete indicarmene il motivo?
    Forse nel dataset non c'e' una datatable "Prodotti" oppure non ho ben capito cosa non ti funzioni. Se devi utilizzare solo una datatable o comunque non hai bisogno delle funzionalita' del dataset (es. datarelation) ti conviene imparare a lavorare con singole datatable. Quindi invece che istanziare un dataset per poi metterci dentro la datatable puoi limitarti alla datatable...
    codice:
    Dim dtProdotti As New DataTable("Prodotti")
    da.Fill(dtProdotti) 
    dg.DataSource = dtProdotti
    dg.DataBind
    Saluti a tutti
    Riccardo

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    702
    Ciao Riccardo, innanzitutto grazie per aver risposto!

    Purtroppo l'errore che mi viene restituito è generico

    Exception Details: System.Data.OleDb.OleDbException: No error information available: REGDB_E_CLASSNOTREG(0x80040154).

    se usi un datadapter e' inutile aprire la connessione
    Lo so, è implicito... ho voluto scrivere tutto per esteso per verificare se ci fosse qualche differenza tra un'applicazione client ed una server. Purtroppo non era per quello.

    Il problema è che non mi aprire proprio la connessione.

    Da assoluto profano: forse che c'è qualcosa da configurare su IIS, oppure il fatto di avere 2 versioni del Framework installate può causare qualche problema?

  4. #4
    Originariamente inviato da borgorosso
    Purtroppo l'errore che mi viene restituito è generico
    Exception Details: System.Data.OleDb.OleDbException: No error information available: REGDB_E_CLASSNOTREG(0x80040154).
    proverei a reinstallare mdac ( http://www.microsoft.com/data )
    Lo so, è implicito... ho voluto scrivere tutto per esteso per verificare se ci fosse qualche differenza tra un'applicazione client ed una server. Purtroppo non era per quello.
    immaginavo anche io che non era per quello ma te lo detto proprio perche' aprendo la connessione e chiudendola come facevi correvi il rischio che conn.close non venisse eseguito in caso di problemi. Se proprio devi, metti il codice all'interno di un try catch utilizzando il finally per chiudere sicuramente la connessione (ed eventualmente altre risorse utilizzate).
    Il problema è che non mi aprire proprio la connessione.
    hai provato a mettere un breackpoint e scorrendo l'esecuzione della procedura si blocca quando fai conn.open?
    Da assoluto profano: forse che c'è qualcosa da configurare su IIS, oppure il fatto di avere 2 versioni del Framework installate può causare qualche problema?
    fossi in te eviterei di tenere due versioni del framework installate. Quindi, se cosi e', disinstalla la versione piu' vecchia.
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    702
    Ancora grazie, sei stato veramente prezioso. Ti confesso che non pensavo fosse così difficoltoso passare da client a server: ben mi sta, la prossima volta mi faccio i fatti miei :gren:

    Un salutone

    Francesco

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    1,482
    codice:
    Dim cnn As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=C:\Inetpub\wwwroot\Giorno9\bin\No
    rthwind.mdb")
    quì mancava un punto e virgola.


    Hey hey, my my Rock and roll can never die!

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    702
    Dove manca un punto e virgola?

  8. #8
    Il punto e virgola mancava nella stringa di connessione (vedi grassetto):
    Dim cnn As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=C:\Inetpub\wwwroot\Giorno9\bin\No

    rthwind.mdb")



  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    702
    come sospettavo... ho dato la colpa a tutto... versioni di Framework, Visual Studio etc. ed alla fine era una boiata.

    Comunque grazie a tutti quelli che hanno avuto la bontà di rispondermi !

    Ciao e grazie!

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.