Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    144

    Errore su classi e web service

    Scusate ma sono proprio una novellina della programmazione web...ho i seguente problema:
    Ho creato una semplice classe in questo modo:

    Public Class ClsODL
    Public Function SelezioneODL(ByVal sql As String) As DataSet
    Dim cn As New Oracle.DataAccess.Client.OracleConnection("data source=netsim;user id=sim_amministratore;password=opus")
    Dim da As New Oracle.DataAccess.Client.OracleDataAdapter(sql, cn)
    Dim ds As New DataSet
    da.Fill(ds)
    Return ds
    End Function

    End Class

    E ho provato a richiamrlo da un web service

    <WebMethod()> _
    Public Function WSSelezionaODL() As DataSet
    Dim p As New ClsLibODL.ClsODL
    Return p.SelezioneODL("select IDODL from odl")
    End Function

    Ma quando provo ad usare il servizio web ho il seguente errore:

    System.InvalidOperationException: Per questa operazione la connessione deve essere aperta
    at Oracle.DataAccess.Client.OracleCommand.ExecuteRead er(Boolean requery, Boolean fillRequest, CommandBehavior behavior)
    at Oracle.DataAccess.Client.OracleCommand.ExecuteRead er(Boolean requery, Boolean fillRequest, CommandBehavior behavior)
    at Oracle.DataAccess.Client.OracleDataAdapter.Fill(Da taSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
    at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
    at ClsLibODL.ClsODL.SelezioneODL(String sql) in C:\ProgettiDotNET\ODL\ClsLibODL\ClsODL.vb:line 7
    at WSODL.WSODL.WSSelezionaODL() in c:\inetpub\wwwroot\WSODL\WSOdl.asmx.vb:line 46

    Che ne dite? Avete idea di che cosa ho sbagliato?
    Grazie a tutti quelli che vorranno rispondere...

  2. #2
    if (cn.State != System.Data.ConnectionState.Open)
    {
    cn.Open();
    }
    // ExecuteReader qui

    Ciao

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    strano il dataadapter dovrebbe aprire e chiudere la connessione in automatico.

  4. #4
    Sinceramente non capisco perchè salta fuori
    Oracle.DataAccess.Client.OracleCommand.ExecuteReader

    ed il reader viene aperto da command. il quale di default non chiude ed apre le connessioni in automatico. Al massimo può chiuderla implementando un CommandBehavior. Non sono un esperto di oracle in .net.. per questo bisognerebbe sentire daniele80.

  5. #5
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    bè in questo pezzo di codice io vedo questo

    Public Class ClsODL
    Public Function SelezioneODL(ByVal sql As String) As DataSet
    Dim cn As New Oracle.DataAccess.Client.OracleConnection("data source=netsim;user id=sim_amministratore;password=opus")
    Dim da As New Oracle.DataAccess.Client.OracleDataAdapter(sql, cn)
    Dim ds As New DataSet
    da.Fill(ds)
    Return ds
    End Function
    sopratutto qua

    Dim da As New Oracle.DataAccess.Client.OracleDataAdapter(sql, cn)
    Dim ds As New DataSet
    da.Fill(ds)
    vedo che usa un dataadapter e poi fa il fill.

  6. #6
    Si questo l'avevo già letto nel topic.
    ma se analizzi l'eccezione scopri che il tutto è stato sollevato perchè

    System.InvalidOperationException: Per questa operazione la connessione deve essere aperta
    at Oracle.DataAccess.Client.OracleCommand.ExecuteReader](Boolean requery, Boolean fillRequest, CommandBehavior behavior)

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    appunto allora mi domando il dataadapter in oracle non apre e chiude la connessione in auto.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    144
    esatto, anch'io sapevo che il datadapter quando fa il fill apre anche la connessione, ma vi garantisco che non funziona nemmeno facendo cn.open prima del fill.
    Che dite?

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.