Primo problema: Gli oggetti vanno sempre inizializzati e visto che le hashtable sono oggetti, prima di essere usate vanno inizializzate. sempre. Poi, questa è una "best pratice", non tenere campi public, trasformali in proprietà
codice:
public class ConDB
{
public Hashtable myHas { get;set; }
//nel costruttore della classe istanzi tutti gli oggetti che devono essere istanziati.
public ConnDB()
{
myHas = new Hashtable ();
}
Secondo Problema: eseguiestrazione e pubblica sono due metodi separati che vengono richiamati nell'ambito di due richieste http separate e che LOCALMENTE istanziano un oggetto ConnDB i quali avranno la propria hashtable che nascerà e morirà nell'ambito dello scope della singola funzione. Non risolvi il problema nemmeno se dichiari ConnDB a livello pagina perche come ti ho detto prima siamo in asp.net e le due funzioni vengono richiamate nell'ambito di due richieste http diverse.
Il problema si risolve o accorpando i due metodi in un unico metodo, o implementando una logica di persistenza di myHash (anche in un file di testo, se sono dati temporanei), o (sconsigliatissimo ma molto piu semplice ed è la scelta preferita di chi è alle prime armi) memorizzare in "eseguiestrazione" l'oggetto storico nella Session e ripescarlo da li in "pubblica".
codice:
Session["storico"] = storico; //salvo lo storico nella session
...
ConnDB storico = (ConnDB)Session["storico"]; //lo ripesco dalla session