Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problema con query
Forum - C# / VB.NET - Problema con query

Avatar
Ricky85 (Normal User)
Newbie


Messaggi: 2
Iscritto: 23/06/2011

Segnala al moderatore
Postato alle 20:36
Martedì, 13/03/2012
Ciao a tutti!

Sto facendo un programmino che comunica con un DB firebird e deve fare delle ricerche dentro il db stesso ma sono bloccato da stamattina e non ho ancora trovato soluzione!

In pratica devo fare ciò, nel db ci sono i MAC address delle macchine che si connettono salvate dentro ad una tabella, io devo poter connettermi con il mio programma e controllare se il MAC del pc che sto utilizzando è già nel db oppure no, fino ad ora sono arrivato a questo punto:

Codice sorgente - presumibilmente VB.NET

  1. Dim Query As String = "SELECT * FROM licenze ORDER BY id ASC"
  2.     Public Str_Co As String = "Database=il.mio.ip:c:\OdS_AT.FDB;ServerType=0;username=sysdba;password=masterkey;"
  3.     Dim Co As New FbConnection
  4.  
  5.     ' Mi connetto, creo la tabella, la riempio e controllo se ci sono valori
  6.     Co.ConnectionString = Str_Co
  7.     Dim Adattatore As New FbDataAdapter(Query, Co)
  8.     Dim Tabella As New DataTable
  9.         Adattatore.Fill(Tabella)
  10.         Adattatore.Dispose()
  11.         Tabella.Dispose()
  12.  
  13.     Dim reg_macaddress As String = "8CA98277FEA9"
  14.  
  15.     Dim foundrows() As DataRow = Tabella.Select("macaddress = '" & reg_macaddress & "'")
  16.         If foundrows.Count = 0 Then
  17.             MessageBox.Show("Nessun record")
  18.         ElseIf Tabella.Rows.Count > 0 Then
  19.  
  20.             MessageBox.Show(Tabella.Rows.Count)
  21.         Else
  22.             MessageBox.Show("errore")
  23.  
  24.         End If



Il problema è che pare non applichi il filtro sulla datatable perchè qualsiasi cosa ci sia scritta nel indirizzo MAC (sia che già esista sia che manchi) mi da sempre la quantità totale delle righe caricate nel DB.

Aiuto non so più dove sbattere la testa ><


Ultima modifica effettuata da Ricky85 il 13/03/2012 alle 20:36
PM
Avatar
Snogar (Normal User)
Pro


Messaggi: 145
Iscritto: 09/01/2012

Up
0
Down
V
Segnala al moderatore
Postato alle 20:42
Martedì, 13/03/2012
Scusa ma forse mi è sfuggito quale sia il tuo problema ....tu dici "mi da sempre la quantità totale delle righe caricate nel DB"  .....ed è giusto, nella query che hai fatto gli dici di restituirti tutte le righe ordinate per ID ...non vedo dove sia il problema.

Ma con questa riga - Ricky85 - 13/03/12 20:54
Dim foundrows() As DataRow = Tabella.Select("macaddress = '" & reg_macaddress & "'") non dovrebbe filtrarmi solamente tutto ciò che trova con campo = a reg_macaddress? scusa non ci sto capendo più nulla >< - Ricky85 - 13/03/12 20:55
Hai esaminato il contenuto di foundrows ? - nessuno - 13/03/12 21:06
PM
Avatar
Snogar (Normal User)
Pro


Messaggi: 145
Iscritto: 09/01/2012

Up
0
Down
V
Segnala al moderatore
Postato alle 8:24
Mercoledì, 14/03/2012
Credo che il problema sia nel metodo Tabella.Dispose  ....lo hai richiamato prima di utilizzare la tabella.

poi stavo notando che nei vari if non c'è la condizione per verificare un singolo record  ...gli dici se foundrows è zero mandi un messaggio di Nessun Record ....se è maggiore di zero ti ritorna il numero totale delle righe e pr tutti gli altri casi mandi un messaggio di errore, ma non ha senso perchè la tabella o è vuota o c'è qualcosa quindi questa terza eventualità non si verificherà mai.

Ultima modifica effettuata da Snogar il 14/03/2012 alle 8:32
PM