Avatar billede iq-n Nybegynder
04. april 2006 - 10:17 Der er 5 kommentarer og
1 løsning

Søge ud fra en tekst fra en database

jeg er ved at prøve at lave en simpel søgemaskine så man kan indtaste en et søgeord og så kigger den i det felt der hedder beskrivelse i databasen. Men for at kunne få den til at vise noget bliver man nød til at skrive at hvad der står i beskrivelsen. Er der ikke en måde man kan nøjes med at skrive er enkelt ord og får den til at se om det er i databasen?

Koden ser sådan ud intil videre:

    void Soeg(Object sender, EventArgs e)
    {
        string strSoeg, strSQL;
        Session["Soegeord"] = tbSoeg.Text;
        lblResultat.Text = "";
        strSoeg = Session["Soegeord"].ToString();
        OleDbConnection OurConnection;
        OleDbCommand OurCommand;
        OleDbDataAdapter OurDataAdapter;
   
        DataSet OurDataSet;
        OurDataSet = new DataSet();
        strSQL = "Select * From Produkter WHERE Beskrivelse = '" + strSoeg + "'";
        OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db/fff.mdb"));
        OurCommand = new OleDbCommand(strSQL,OurConnection);
   
        OurDataAdapter = new OleDbDataAdapter(OurCommand);
   
        OurDataAdapter.Fill(OurDataSet, "Produkter");
        MyRepeater.DataSource = OurDataSet.Tables["Produkter"].DefaultView;
        MyRepeater.DataBind();
    }
Avatar billede dj_uncas Nybegynder
04. april 2006 - 10:29 #1
I SQL:
WHERE Beskrivelse = '%" + strSoeg + "%'


Og så lige et par kommentarer:
1. Hvorfor gemmer du søgeordet i en Session? Skal det bruges senere? Ellers er det enormt spild af kræfter.
2. Parametiserede queries er din ven. Eks:
strSql = "SELECT * FROM table WHERE x=@parm";
OurCommand.Parameters.Add( new OleDbParameter( "@parms", "y" ) );
http://msdn2.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters(VS.80).aspx
Avatar billede arne_v Ekspert
04. april 2006 - 13:23 #2
du mener nok

WHERE Beskrivelse LIKE '%" + strSoeg + "%'
Avatar billede dj_uncas Nybegynder
04. april 2006 - 13:34 #3
Hovsa, ja..
Avatar billede iq-n Nybegynder
05. april 2006 - 09:25 #4
Jamen det var lige det jeg skulle gøre, hvem viste det var så nemt at lave søgemaskiner?

Jeg gemmer den som en session så når bugeren går tilbage på siden så står det sidste søgeord der stadig.

Det med Parameter forstår jeg ikke helt, jeg er først lige begyndt med ASP.net

Men takker mange gange ligger du/i et svar?
Avatar billede dj_uncas Nybegynder
05. april 2006 - 09:34 #5
Parametrene er ret vigtige at få styr på. Det fjerner en del muligheder for såkaldt SQL-injection, hvilket betyder at folk med de rette evner kan ødelægge eller slette din database!

Indtil du har fod på det, kan du altid are copy/paste min eksempel kode, så du lukker det åbenlyse sikkerhedshul der er der..

Jeg har i hvert fald været tilbage i alle mine projekter der ikke brugte parametre og ændret det efter jeg opdagede dem..
Avatar billede dj_uncas Nybegynder
05. april 2006 - 09:35 #6
.. og et svar ;-)
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

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