salve sto cercando di migliorare questo pezzo di codice ma non riesco ad arrivare ad una soluzione più pulita....chiaramente sto imparando questo linguaggio da poco quindi non sono un mostro in questo linguaggio...il codice è il seguente:
codice:
public List<string>[] lettura(string sql,string val1="",string val2="")
{
List<string>[] list = new List<string>[2];
if (val1 != "") { list[0] = new List<string>(); }
if (val2 != "") { list[1] = new List<string>(); }
objCmd = new OleDbCommand(sql, objConnection);
try
{
reader = objCmd.ExecuteReader();
while (reader.Read())
{
if (val1 != "") { list[0].Add(reader[val1] + ""); }
if (val2 != "") { list[1].Add(reader[val2] + ""); }
}
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
reader.Close();
objConnection.Close();
return list;
}
praticamente questo non fa altro che data una QUERY SELECT mettermi il risultato in uno o più array list, premetto che ho fatto questo pezzo di codice in modo da poter interrogare il db access in modo veloce in qualsiasi momento senza stare sempre a riscrivere la connessione ecc ecc... praticamente in questo modo ad esempio riesco ad avere nome e cognome di una persona:
codice:
List<string>[] list;
list = leggigruppi.lettura("SELECT * FROM gruppi ","nome","cognome");
for (int i = 0; i < list[0].Count; i++)
{
comboBox3.Items.Add(list[0][i]);
comboBox2.Items.Add (list[1][i]);
}
ora il problema, il database non è formato solo da nome e cognome ma da molti altri campi che in qualsiasi momento potrebbero servirmi anche tutti insieme, e dal modo come sto procedendo io dovrei fare una schifezza del genere:
codice:
public List<string>[] lettura(string sql,string val1="",string val2="",string val3="",string val4="",string val5="")
{
List<string>[] list = new List<string>[2];
if (val1 != "") { list[0] = new List<string>(); }
if (val2 != "") { list[1] = new List<string>(); }
if (val3 != "") { list[2] = new List<string>(); }
if (val4 != "") { list[3] = new List<string>(); }
if (val5 != "") { list[4] = new List<string>(); }
objCmd = new OleDbCommand(sql, objConnection);
try
{
reader = objCmd.ExecuteReader();
while (reader.Read())
{
if (val1 != "") { list[0].Add(reader[val1] + ""); }
if (val2 != "") { list[1].Add(reader[val2] + ""); }
if (val3 != "") { list[2].Add(reader[val3] + ""); }
if (val4 != "") { list[3].Add(reader[val4] + ""); }
if (val5 != "") { list[4].Add(reader[val5] + ""); }
}
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
reader.Close();
objConnection.Close();
return list;
}
ecco praticamente aggiungento il numero di valori in entrara in questo caso sono arrivato a 5 e aggiungendo di conseguenza il numero di IF potrei operare su una tabella con massimo 5 campi...ma se volessi operare su tabelle con massimo 100 campi ?? il risultato sarebbe una pagina di codice lunghissima......
Quindi vi chiedo come potrei ovviare a questo problema mantenendo questa tipologia di risultalto?