Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - c#, controllare che una tabella sia vuota
Forum - C# / VB.NET - c#, controllare che una tabella sia vuota

Avatar
carmine (Member)
Pro


Messaggi: 168
Iscritto: 20/04/2010

Segnala al moderatore
Postato alle 14:08
Mercoledì, 09/03/2011
Ragazzi dovrei controllare che una tabella sia vuota cioè senza alcun record ho provato cosi:
Codice sorgente - presumibilmente C#

  1. public bool DbIsNull()
  2.         {
  3.             object result;
  4.  
  5.             result = ExecuteQuery("SELECT COUNT(*) FROM FantaSquadra");
  6.  
  7.             if (result == null) return true;
  8.             else return false;
  9.         }
  10.  
  11.     public void Form1_Load(object sender, EventArgs e)
  12.         {
  13.             bool result;
  14.             SetConnection();
  15.             result = DbIsNull();
  16.             if (result==true) { LoadData();  }
  17.             else
  18.             {
  19.            
  20.                      //instruzioni...
  21.             }
  22.         }



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#

  1. public object ExecuteQuery(string txtQuery)  // funzione per le query
  2.         {
  3.                 object result;
  4.                 sql_con.Open();
  5.                 sql_cmd = sql_con.CreateCommand();
  6.                 sql_cmd.CommandText = txtQuery;
  7.                 result = sql_cmd.ExecuteScalar();
  8.                 sql_con.Close();
  9.                 return result;
  10.         }



Ultima modifica effettuata da carmine il 09/03/2011 alle 19:58


Computer Science
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
2
Down
V
Segnala al moderatore
Postato alle 17:17
Mercoledì, 09/03/2011
Testo quotato

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

  1. if(Convert.ToInt32(result)==0)return true ;
  2. 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.

si hai ragione !! comunque io l'ho dichiarata dopo la funzione, qui per scriverla l'ho scritta così!!! comunque adesso posto anke la funzione! - carmine - 09/03/11 19:57


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
el borto (Normal User)
Rookie


Messaggi: 47
Iscritto: 19/07/2009

Up
-1
Down
V
Segnala al moderatore
Postato alle 15:54
Mercoledì, 09/03/2011
la query, se la tabella non ha record, non restituisce null ma 0 quindi dovresti fare :
Codice sorgente - presumibilmente C# / VB.NET

  1. if(Convert.ToInt32(result)==0)return true ;
  2. else return false;


penso che così funzioni, mi dispiace ma al momento non posso provare il mio codice.

PM
Avatar
el borto (Normal User)
Rookie


Messaggi: 47
Iscritto: 19/07/2009

Up
-1
Down
V
Segnala al moderatore
Postato alle 17:28
Mercoledì, 09/03/2011
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 :_doubt: ; comunque ,come suggerisce totem, il modo migliore per trovare l'errore è mettere dei breakpoint e controllare il valore delle variabili durante il debug

PM