Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C#] DataRow ha bisogno di DataTable?

    Domanda stupida: ma se io inizializzo un DataRow, posso utilizzarlo simil array, conl vantaggio di richiamare la avrei posizioni anzichè con un indice, con dei nomi, snezxa dovermi creare tutta la atabellina con tutte le colonne?


    Mi spiego ad es. io ho una funzione che prende tot parametri String

    mi voglio creare un DataRow con tutti i parametri passati da function.

    Per come ho capito io che si usa il DataRow, faccio così
    codice:
    public authentication(connection cnn, String table, String username, String password, String usr_username, String usr_password, int type, String label, String check)
            {
                DataTable auth_datatable = new DataTable();
                DataColumn auth_cnn = new DataColumn();
                DataColumn auth_table = new DataColumn();
                DataColumn auth_username = new DataColumn();
                DataColumn auth_password = new DataColumn();
                DataColumn auth_type = new DataColumn();
                DataColumn auth_label = new DataColumn();
                DataColumn auth_check = new DataColumn();
                DataColumn auth_usr_username = new DataColumn();
                DataColumn auth_usr_password = new DataColumn();
                auth_cnn = auth_datatable.Columns.Add();
                auth_cnn.ColumnName = "connection";
                auth_table = auth_datatable.Columns.Add();
                auth_table.ColumnName = "table";
                auth_username = auth_datatable.Columns.Add();
                auth_username.ColumnName = "username";
                auth_password = auth_datatable.Columns.Add();
                auth_password.ColumnName = "password";
                auth_type = auth_datatable.Columns.Add();
                auth_type.ColumnName = "type";
                auth_label = auth_datatable.Columns.Add();
                auth_label.ColumnName = "label";
                auth_check = auth_datatable.Columns.Add();
                auth_check.ColumnName = "check";
                auth_usr_username = auth_datatable.Columns.Add();
                auth_username.ColumnName = "usr_username";
                auth_usr_password = auth_datatable.Columns.Add();
                auth_usr_password.ColumnName = "usr_password";
                DataRow auth_param = auth_datatable.NewRow();
                auth_param["connection"] = cnn;
                auth_param["table"] = table;
                auth_param["username"] = username;
                auth_param["password"] = password;
                auth_param["type"] = type;
                auth_param["label"] = label;
                auth_param["check"] = check;
                auth_param["usr_username"] = usr_username;
                auth_param["usr_password"] = usr_password;
    come vedete è lungo e palloccoloso.
    posso ugualmente utilizzare un datarow senza tutte le volte starmi a creare le colonne? oppure utilizzando semplicemente qualcos altro che fa quello che chiedo?


    grazie mille!
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    sezione sbagliata..

    comunque intanto puoi snellire la cosa facendoti un array di datacolumn, dare un nome ed un valore, ed aggiungere al datatable tutto l'array con un addRange(datacolumn[])

    poi invece di crearti il datacolumn, aggiungerlo e poi impostare tutte le proprietà potresti usare un costruttore a più parametri e quindi fare in una riga quello che fai in 3 righe..

    alla fine ridurresti le righe di codice del 60% minimo..

  3. #3
    Originariamente inviato da Stoicenko
    poi invece di crearti il datacolumn, aggiungerlo e poi impostare tutte le proprietà potresti usare un costruttore a più parametri e quindi fare in una riga quello che fai in 3 righe..

    alla fine ridurresti le righe di codice del 60% minimo..
    la prima parte l'ho fatta e mi sembra ok. la seconda (quella quotata) non l'ho capita.
    forse quando parli di datacolumn ti riferisci al datarow?
    non ho capito il discorso del costruttore a più parametri, quindi.


    grazie.

    mi scuso per aver sbagliato sezione, non mi ero accorto.
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

  4. #4
    una cosa che inoltre volevo capire era che: è corretto utilizzare un DataRow, quindi con annesso DataTable e Data Columns, a mo' di vettore, con le posizione scandite da nomi anzichè da numeri?
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    codice:
    auth_datatable.Columns.AddRange(new DataColumn[] {new DataColumn("connection"),...);
    questa riga ad esempio, sostituendo i puntini con i vari oggetti datacolumn, ti aggiunge tutte le colonne con il giusto nome all'interno del tatatable..

    risparmi ben 27 righe...

    poi per aggiungere la riga fai:

    codice:
    auth_datatable.Rows.Add(new object[] {cnn,table,... });
    al posto dei puntini i parametri passati..

    risparmi altre righe..

    quindi tutto il tuo codice riassunto in 3 righe.. hehehe

  6. #6
    al posto tuo darei un'occhiata all'oggetto HashTable...

  7. #7
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    volendo pure un dizionario.. di possibilità ne ha tante..

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.