Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,811

    rif a oggetto non impostato su istanza di oggetto (servizio web)

    avendo la seguente funzione

    codice:
     <WebMethod()> _
           Public Function RestituisciDataReader(ByVal Strsql As String) As Odbc.OdbcDataReader
    
            Dim Strconn As String = "Driver={Mysql ODBC 3.51 Driver};Database=db;UID=root;PWD=;PORT=5333;OemToAnsi=No;Server=localhost;OPTION=2083;"
    
            Dim Conn As New Odbc.OdbcConnection
    
            Conn.ConnectionString = Strconn
            Conn.Open()
    
            Dim res As Odbc.OdbcDataReader
            Dim Com As New Odbc.OdbcCommand
            Dim i As Integer
    
            Com.CommandType = CommandType.Text
            Com.CommandText = Strsql
    
            Com.Connection = Conn
    
            res = Com.ExecuteReader
    
            res.Read()
    
            Return res
                   res.Close()
    
            Conn.Close()
        End Function
    che dovrebbe restituirmi un datareader
    mi da errore di
    "riferimento a oggetto non impostato su istanza di oggetto"
    cosa posso fare?

    ricordo che questa funzione si trova in un servizio web
    grazie

  2. #2
    L'oggetto che il web service ti deve restituire deve essere un oggetto serializzabile e non tutti lo sono. Sicuramente se restituisci un dataset con dentro una tabella riempita sulla base della query non ti dara' problemi (visto appunto che il dataset e' serializzabile tranquillamente essendo gia' una rappresentazione xml dei dati).
    Detto questo non ho ben capito se l'errore te lo da una specifica riga della procedura che hai postato oppure il codice client che "consuma" il web service. Nel primo caso, mi sembra che res.Read()
    non serva a un gran che e per di piu' nel momento in cui esci dalla procedura con un return tutto quello che viene dopo e' ignorato a meno che non metti il tutto all'interno di un try e utilizzi la sezione finally
    try
    ' codice da eseguire
    return res
    finally
    ' codice per chiudere le risorse utilizzate
    end try
    Saluti a tutti
    Riccardo

  3. #3
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,811
    no, ehm
    l'errorenon me lo da dal client,
    bensi al momento di mandare in esecuzione il webservice

    cmq grazie

  4. #4
    Sai a che riga ti da l'errore? come richiami la funzione dal client?

  5. #5
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,811
    no, non mi da errore sul client
    direttamente quando compilo il web service

    e non mi da neanche il numero di riga

  6. #6
    Originariamente inviato da amodio
    no, non mi da errore sul client
    direttamente quando compilo il web service

    e non mi da neanche il numero di riga
    Come gia' detto il codice che hai utilizzato per creare il datareader contiene degli errori. In piu' non e' corretto restituire fuori dalla procedura che lo ha creato un datareader sperando di poterlo continuare ad usare (lo stesso datareader e la sua connessione chi la chiudera'? il chiamante? qualcun altro? e se non lo facesse nessuno?). Per finire, per restuire un oggetto attraverso un web service questo deve essere serializzabile quindi ti consiglio di istanziare un dataset, metterci dentro una datatable, riempirla eseguendo la stringa sql e restituire il dataset attraverso il web service.
    Questa strada e' la piu' percorribile (potresti anche crearti una classe custom con l'attributo <serializable> e riempirla dei valori). Con la futura versione del framework, tra le modifiche ci sara' la possibilita' di serializzare molti piu' oggetti come ad esempio una singola datatable.
    Saluti a tutti
    Riccardo

  7. #7
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,811
    ok ok or aci provo

    bata che mi posti un esempio su come scorrere un dataset

    grazie

  8. #8
    Originariamente inviato da amodio
    ok ok or aci provo
    bata che mi posti un esempio su come scorrere un dataset
    codice:
    For Each _table As DataTable In m_ds.Tables
       For Each _dr As DataRow In _table.Rows
    
       Next
    Next
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.