carmine (Member)
Pro
Messaggi: 168
Iscritto: 20/04/2010
|
Ragazzi dovrei controllare che una tabella sia vuota cioè senza alcun record ho provato cosi:
Codice sorgente - presumibilmente C# |
public bool DbIsNull() { object result; result = ExecuteQuery("SELECT COUNT(*) FROM FantaSquadra"); if (result == null) return true; else return false; } public void Form1_Load(object sender, EventArgs e) { bool result; SetConnection(); result = DbIsNull(); if (result==true) { LoadData(); } else { //instruzioni... } }
|
ma purtroppo non mi funziona mi dice che è sempre pieno cioè non esegue le istruzioni in caso di mancanza di record, come posso risolvere??
Codice sorgente - presumibilmente C# |
public object ExecuteQuery(string txtQuery) // funzione per le query { object result; sql_con.Open(); sql_cmd = sql_con.CreateCommand(); sql_cmd.CommandText = txtQuery; result = sql_cmd.ExecuteScalar(); sql_con.Close(); return result; }
|
Ultima modifica effettuata da carmine il 09/03/2011 alle 19:58 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Postato originariamente da el borto:
la query, se la tabella non ha record, non restituisce null ma 0 quindi dovresti fare :
Codice sorgente - presumibilmente C# / VB.NET |
if(Convert.ToInt32(result)==0)return true ;
else return false;
|
penso che così funzioni, mi dispiace ma al momento non posso provare il mio codice. |
Prima di tutto, come fai a saperlo? ExecuteQuery è richiamata in un metodo che viene prima di Form1_Load, perciò è richiamata nel contesto di una classe Form. Ergo, deve essere definita nello stesso contesto o in un modulo globale. Questo significa che potrebbe benissimo non essere la stessa di SqlCommand o OleDbCommand .ExecuteQuery, quindi il tipo di ritorno è sconosciuto. Detto questo, non puoi supporre che sia 0.
Se non fornisci il codice di ExecuteQuery, non possiamo aiutarti.
P.S.: nulla di impedisce di mettere un breakpoint e controllare il contenuto di result. |
|
el borto (Normal User)
Rookie
Messaggi: 47
Iscritto: 19/07/2009
|
la query, se la tabella non ha record, non restituisce null ma 0 quindi dovresti fare :
Codice sorgente - presumibilmente C# / VB.NET |
if(Convert.ToInt32(result)==0)return true ;
else return false;
|
penso che così funzioni, mi dispiace ma al momento non posso provare il mio codice.
|
|
el borto (Normal User)
Rookie
Messaggi: 47
Iscritto: 19/07/2009
|
si totem, hai perfettamente ragione non avevo molto tempo e guardando di fretta il codice ho dato per scontato che il metodo restituisse semplicemente il risultato di una ExecuteReader o di una ExecuteScalare ; comunque ,come suggerisce totem, il modo migliore per trovare l'errore è mettere dei breakpoint e controllare il valore delle variabili durante il debug
|
|