Allora, cerco di essere breve e chiaro:
Prima di tutto ti conviene utilizzare una storedProcedure e l'esempio che ti riporto fà riferimento ad una tabella (inventata al momento) su cui ci sono diversi campi.
Supponiamo di avere la tabella Anagrafica che contiene i campi: Nome,Cognome,DataDiNascita,CodiceFiscale,Indirizzo .
Ora creo una storedProcedure che mi permetta di ricercare all'interno di questa tabella secondo uno o più parametri "passati":
codice:
CREATE PROCEDURE anagraficaCerca
@Nome varchar(20) = null,
@Cognome varchar(20) = null,
@DataDiNascita datetime = null,
@CodiceFiscale char(16) = null,
@Indirizzo varchar(20) = null
AS
SELECT a.Nome,a.Cognome,a.DataDiNascita,a.CodiceFiscale,a.Indirizzo
FROM dbo.Anagrafica a
WHERE a.Nome = ISNULL(@Nome,a.Nome)
AND a.Cognome = ISNULL(@Cognome,a.Cognome)
AND a.DataDiNascita = ISNULL(@DataDiNascita,a.DataDiNascita)
AND a.CodiceFiscale = ISNULL(@CodiceFiscale,a.CodiceFiscale)
AND a.Indirizzo = ISNULL(@Indirizzo,a.Indirizzo)
Nota nella storedProcedure tutti i parametri sono impostati @Param = NULL in fase di dichiarazione, in questo modo possiamo successivamente omettere il passaggio del parametro, e se sono null quando viene eseguita la query provvedere a sostituire ognuno di essi con il corrispettivo valore di colonna della tabella ( ... Table.Param = ISNULL(@Param, Table.Param) in questo modo vengono selezionati tutti i dati in quando l'uguaglianza e logica trattandosi di una comparazione del tipo Colonna = StessaColonna.
Per quanto riguarda la scrittura del codice, niente di speciale. Io "mastico c#" e te lo scrivo cosi come ricordo:
supponiamo di avete i seguenti campi:
Nome: TextBox
Cognome: TextBox
DataDiNascita: DateTimePicker
CodiceFiscale: TextBox
Indirizzo: TextBox
Ora la porzione di codice in cui viene inizializzato un oggetto di tipo System.Data.SqlClient.SqlCommand:
codice:
SqlCommand cm = new SqlCommand(...)
if(!string.IsNullOrEmpty(Nome.text))
cm.Parameters.Add(....)
stessa cosa vale per tutti gli altri campi, spero di esserti stato d'aiuto, se hai dubbi avvisami! Questo è solo uno dei tanti modi in cui è possibile eseguire query di questo tipo!