Avatar billede sbaht Nybegynder
20. marts 2006 - 11:22 Der er 14 kommentarer og
1 løsning

Søgning i db.

Jeg skal lave en søgefunktion hvor søgekriteriet bliver angivet i en textbox som et navn, resultatet skal eferfølgende skrives ud i et datagrid. Jeg kan ikke rigtig komme igang med det, er der nogen der har et par hint..
Resultatet skal udskrives fra en sqldb.
Avatar billede dj_uncas Nybegynder
20. marts 2006 - 11:47 #1
Du skal vel bare lave et udtræk udfra en SQL sætning med en WHERE clause
Avatar billede dj_uncas Nybegynder
20. marts 2006 - 11:50 #2
Eks.:

string searchSql = "SELECT * FROM persons WHERE name=@name";

SqlConnection conn = new SqlConnection( minConnectionString );
SqlCommand cmd = new SqlCommand( searchSql, conn );
cmd.Parameters.Add( new SqlParameter( "@name", txtName.Text );

DataSet ds = new DataSet();
SqlDataAdapter adpt = new SqlDataAdapter( cmd );
cmd.Connection.Open();

adpt.Fill( ds );

cmd.Connection.Close();

MyDataGrid.DataSource = ds;
MyDataGrid.DataBind();
Avatar billede sbaht Nybegynder
20. marts 2006 - 12:25 #3
Fedt det virker!! Tak for hjælpen det var dejlig..
Avatar billede dj_uncas Nybegynder
20. marts 2006 - 12:27 #4
Selv tak..

En ting du nok lige skal gøre er følgende:

try
{
    adpt.Fill( ds );
}
finally
{
    cmd.Connection.Close();
}


så du er sikker på du får lukket din forbindelse.
Avatar billede michael_stim Ekspert
20. marts 2006 - 12:28 #5
Eller du kan bruge LIKE.
WHERE name LIKE '%@name%'
Avatar billede sbaht Nybegynder
20. marts 2006 - 12:37 #6
Ja ok det kan jeg også prøve, men hvad er forskellen??
Avatar billede sbaht Nybegynder
20. marts 2006 - 12:39 #7
Ok så er jeg sikker på at forbindelsen er lukket..
Avatar billede dj_uncas Nybegynder
20. marts 2006 - 13:10 #8
Forskellen er at med LIKE %@name% søger du efter noget der "ligner" det indtastede, og med = finder du noget hvor name er *præcis* det indtastede. I forbindelse med en søgning er LIKE nok det bedste...
Avatar billede arne_v Ekspert
20. marts 2006 - 13:17 #9
vær opmærksom på at LIKE på noget som starter med % ikke kan udnytte index
og derfor er langsomt på meget store tabeller
Avatar billede sbaht Nybegynder
20. marts 2006 - 13:31 #10
Ok hvis det går ud over performance så er det ikke godt, tabellen vil over tid blive MEGET stor. Det er også fint nok mht. at bruge WHERE da det søgekriterie der indtastes er unikt. Men tak for jeres input.
Avatar billede arne_v Ekspert
20. marts 2006 - 13:32 #11
bemærk at

LIKE @name%

kan godt bruge et index - det er kun start med % der er slem
Avatar billede michael_stim Ekspert
20. marts 2006 - 13:41 #12
Ville nok fortrække at bruge LIKE, da der ellers skal staves rigigt hver gang man søger efter noget. Er det navne man søger efter, kan det blive problematisk, da de mange gange kan staves på flere forskellige måder ;o)
Avatar billede dj_uncas Nybegynder
20. marts 2006 - 13:42 #13
og for lige at få det med, så betyder et % i starten af LIKE clausen af der skal matches alt der starter med "noget" efterfulgt af @name, mens et % i slutningen matcher alt der starter med @name og ender med "noget"...
Avatar billede dj_uncas Nybegynder
20. marts 2006 - 13:42 #14
michael_stim >> Det er ikke altid det fede. Hvis man eks. skal søge efter et side ID kan man lige så godt bruge =
Avatar billede michael_stim Ekspert
20. marts 2006 - 13:47 #15
Derfor jeg kom med et eksempel ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester