Motore di ricerca interno

venerdì 12 febbraio 2010 - 18.23

NetDev Profilo | Newbie

Ciao a tutti,

ho un database di libri che popolo tramite una semplice INSERT e che visualizzo tramite un dataGrid.
Vorrei realizzare un semplice motore di ricerca interno che mi permetta di verificare (ad esempio in base al titolo) la presenza o meno di un libro nel database e visualizzare il risultato.

Qualcuno può darmi una dritta?

Grazie!

ridaria Profilo | Expert

una select sulla tabella che contiene i dati in base alla parola chiave da cercare:

Select, id, nomeTitolo where nomeTitolo ='parolaDACercare'

Potresti affinare la ricerca con l'utilizzo dell'operatore "like"

Ciao
Riccardo D'Aria

NetDev Profilo | Newbie

Grazie per la risposta.
Dato che sono proprio alle prime armi, non potresti postarmi un esempio?
Ho trovato uno script pronto nel quale viene effettuato l'accesso ai dati tramite ADO ma non riesco ad adattarlo per ADO.NET, probabilmente mi manca la dll.
Ad ogni modo viene usato un recordset e, a quanto ho capito, è un codice un pò obsoleto.

Grazie ancora.

ridaria Profilo | Expert



Questo come puoi vedere fa anche il binding sulla griglia dati:

Dim strSQL As String = ""

Dim testo As String = ""
Dim nomeCampo As String = ""

testo = "testo da cercare"
nomeCampo = "nomeDelCampoInCuiCercare"

testo = Replace(testo, "'", "''")

If testo <> "" Then
strSQL = "Select * from nomeTabella where " & nomeCampo & " like '" & testo & "%'"

AccessDataSource1.SelectCommand = strSQL
GridView1.DataBind()

End If

Spero che tu abbia dimistichezza con i dataSource.

Questo codice lavora su di un db di access.

Ciao

Riccardo D'Aria

NetDev Profilo | Newbie

Ok, sono riuscito ad ottenere qualcosa!

Questo è il codice:

'Apro una Connessione al database
Dim cn As OleDbConnection
Dim myPath As String
myPath = Server.MapPath("App_Data/libri.mdb")
cn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;" & "Data Source=" & myPath & ";")
'cn.Open()
Dim objReader As OleDbDataReader
Dim objCmd As OleDbCommand
cn.Open()

Dim strSQL As String
Dim testo As String
Dim nomeCampo As String

testo = txtRicTitolo.Text
nomeCampo = "Titolo"

testo = Replace(testo, "'", "''")

If testo <> "" Then
strSQL = "Select * from tblLibri where " & nomeCampo & " like '" & testo & "%'"

AccessDataSource1.SelectCommand = strSQL
GridView2.DataBind()

End If

Non mi è chiaro "testo = Replace(testo, "'", "''")". A cosa serve?

Inoltre ora come ora mi da come risultato solo i titoli che sono esattamente la parola da cercare inserita. Vorrei estendere la ricerca anche ai titoli che contengono quella parola. Come posso fare?

Grazie ancora!

ridaria Profilo | Expert


>
>Non mi è chiaro "testo = Replace(testo, "'", "''")". A cosa serve?

serve per sostituire eventuali apostrofo nel testo da cercare che qualora ci fossero verrebbero interpretati come degli apici mandando in errore il data reader.
>Inoltre ora come ora mi da come risultato solo i titoli che sono
>esattamente la parola da cercare inserita. Vorrei estendere la
>ricerca anche ai titoli che contengono quella parola. Come posso
>fare?

Usa l'operatore like come ho fatto io, ma se googli un pò, sull'operatore like, trovereai dettagliate spiegazioni

CIAO


Riccardo D'Aria

NetDev Profilo | Newbie

Grazie mille, ho risolto mettendo un "%" anche all'inizio della stringa da confrontare.

ridaria Profilo | Expert

Gentilmente chiudi questo post accettando la mia risposta?


Grazie
Riccardo D'Aria

NetDev Profilo | Newbie

Scusa credevo di averlo già fatto :)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5