Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Ritorno dati da Db

  1. #1

    Ritorno dati da Db

    Salve !

    seguendo un esempio sul manuale ho redatto il seguente codice per farmi ritornare tre valori :
    codice:
            public  List<String> getDatiAcc()
            {
                MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
                 MySql.Data.MySqlClient.MySqlCommand cmd;
                string cmdString = "Select id_utente, id_azienda from Utenti where ID_utente = 1 ";
                conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnessioneMYSQL"].ConnectionString;
                cmd = new MySql.Data.MySqlClient.MySqlCommand(cmdString, conn);
                conn.Open();
    
                MySql.Data.MySqlClient.MySqlDataReader Leggi;
                List<string> returnData = new List<string>();
    
                Leggi = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    
                while (Leggi.Read()) {
    
                    returnData.Add(Leggi["ID_utente"].ToString());
                    returnData.Add(Leggi["ID_Azienda"].ToString());
                }
    
                return returnData;
            
            }
    Ho problemi di gestire i valori ritornati;so che dovo creare una chiamata a questa classe per farmi ritornare una collezione dei dati, ma non riesco a impostare bene il codice.
    Mi dite cme posso gestire all'esterno ?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    secondo me dovresti costruirti una classe con i campi che interessano, per esempio id_utente e id_azienda.
    La lista non dovrebbe essere del tipo stringa, ma del tipo di questa classe.

    Io comunque userei il datatable che fa quello desideri.

    Pietro

  3. #3
    Mi fai un esempio per favore ?
    Grazie

  4. #4
    Originariamente inviato da Marcolino21
    Mi fai un esempio per favore ?
    Grazie

    Fatto grazie, ma non ricordo più come recupero il valore ! Aiuto ??

    codice:
             DataTable Mytab = new DataTable();
                MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
                conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnessioneMYSQL"].ConnectionString;
                MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
                cmd.CommandText = "Select * from Utenti where ID_utente = 1 ";
                cmd.CommandType = CommandType.Text;
                cmd.Connection = conn;
                MySql.Data.MySqlClient.MySqlDataAdapter MyAdapt = new MySql.Data.MySqlClient.MySqlDataAdapter();
                MyAdapt.SelectCommand = cmd;
                MyAdapt.Fill(Mytab);

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti faccio un esempio elementare in vb.net che puoi tradurre in c# con poco sforzo.

    creo una classe nella directory App_Code

    codice:
    Public Class prova
        Public Property codice_istat_regione As String
        Public Property nome_regione As String
    End Class

    creo il metodo getDatiAcc del tipo List(Of prova)

    codice:
        Protected Function getDatiAcc(stringaConnessione As String, sql As String) As List(Of prova)
            Dim result As New List(Of prova)()
    
            Using dr As OleDbDataReader = msole.GetDataReader(stringaConnessione, sql)
                Do While dr.Read
                    result.Add(New prova() With {.codice_istat_regione = dr(0).ToString, .nome_regione = dr(1).ToString})
                Loop
            End Using
            Return result
        End Function

    e lo richiamo con
    codice:
    Dim lista As List(Of prova) = getDatiAcc(gl.StringaConnessione, "select codice_istat_regione, nome_regione from regioni where codice_istat_regione = '20'")


    come detto, eliminerei questo codice e creerei un datatable col codice
    codice:
    Dim dt As DataTable = msole.GetDataTable(gl.StringaConnessione, "select codice_istat_regione, nome_regione from regioni where codice_istat_regione = '20'")
    GetDataTable è evidentemente un metodo statico della classe msole che devi implementare.
    Pietro

  6. #6
    Gentilissimo, ma ora o fatto in un altro modo come da post precedente

    ora l'oggetto DataTable è pieno e non ricordo come devo recuperare i dati !

  7. #7
    {RISOLTO}

    Grazie

    Ute = (int)Mytab.Rows[0]["id_utente"];


  8. #8
    Scusate, perchè mi da errore dentro la classe questo codice che funziona perfettamente da un'altra parte? le using ci sono !
    Ecco l'errore e il codice



    [CODE]

    ---> Errore

    Errore di compilazione
    Descrizione: Errore durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Rivedere i dettagli relativi all'errore e modificare in modo appropriato il codice sorgente.

    Messaggio di errore del compilatore: CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi 'MySql'; probabilmente manca una direttiva using o un riferimento a un assembly

    Errore nel codice sorgente:


    Riga 40:
    Riga 41: DataTable Mytab = new DataTable();
    Riga 42: MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
    Riga 43: conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnessioneMYSQL"].ConnectionString;
    Riga 44: MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();


    File di origine: c:\Users\Biagio\Documents\Visual Studio 2010\Projects\ControlloImpianto2\App_Code\ClassGen .cs Riga: 42


    ----> Codice

    public class ClassGen
    {
    public string getDatiAcc(String cmdstring)
    {
    //MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
    //MySql.Data.MySqlClient.MySqlCommand cmd;
    //string cmdString = "Select id_utente, id_azienda from Utenti where ID_utente = 1 ";
    //conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnessioneMYSQL"].ConnectionString;
    //cmd = new MySql.Data.MySqlClient.MySqlCommand(cmdString, conn);
    //conn.Open();

    //MySql.Data.MySqlClient.MySqlDataReader Leggi;
    //List<string> returnData = new List<string>();

    //Leggi = cmd.ExecuteReader(CommandBehavior.CloseConnection) ;

    //while (Leggi.Read())
    //{

    // returnData.Add(Leggi["ID_utente"].ToString());
    // returnData.Add(Leggi["ID_Azienda"].ToString());
    //}

    DataTable Mytab = new DataTable();
    MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
    conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnessioneMYSQL"].ConnectionString;
    MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
    cmd.CommandText = cmdstring;
    cmd.CommandType = CommandType.Text;
    cmd.Connection = conn;
    MySql.Data.MySqlClient.MySqlDataAdapter MyAdapt = new MySql.Data.MySqlClient.MySqlDataAdapter();
    MyAdapt.SelectCommand = cmd;
    MyAdapt.Fill(Mytab);

    MyAdapt.Dispose();
    cmd.Dispose();
    conn.Dispose();

    return (MyAdapt);

    }


    }

  9. #9

    {RISOLTO}

    Bisogna scaricare MysqlData.dll nella cartella bin del progetto

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.