53 messaggi dal 02 gennaio 2007
salve ho creato questo codice per vedere sql su richiesta su datagridview, vorrei modificare il sql per far si che anzichè vedere tutta la tabella solo dei dati filtrati , come posso modificare il codice?sql con l'apice è il codice che vorrei lanciare

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSearch.Click
Button2.Enabled = True
Dim item = TextBox1.Text
Dim con1 As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=D:\db.mdb")
Dim sql As String
'sql = "SELECT Elenco.id, Elenco.domanda, Elenco.durata_ore, Elenco.durata_min, Elenco.durata_sec, Elenco.dimensione, Elenco.Risposta, Elenco.dataaggiunto FROM Elenco.domanda Like = '*" & item & "*' "
sql = "SELECT Elenco.id, Elenco.domanda, Elenco.durata_ore, Elenco.durata_min, Elenco.durata_sec, Elenco.dimensione, Elenco.Risposta, Elenco.dataaggiunto FROM Elenco"

Try
Dim adapter As New OleDbDataAdapter(sql, con1)

' Gets the records from the table and fills our adapter with those.

Dim dt As New DataTable("Elenco")

adapter.Fill(dt)
' Assigns our DataSource on the DataGridView
dgv1.DataSource = dt
Dim sql1 As String
sql1 = "SELECT * FROM elenco"
Dim adapter1 As New OleDbDataAdapter(sql1, con1)
Dim cmd1 As New OleDbCommand(sql1, con1)
'Dim dt1 As New DataTable("users")
con1.Open()
Dim myreader As OleDbDataReader = cmd1.ExecuteReader
myreader.Read()
con1.Close()
Catch Ex As Exception
MessageBox.Show("Impossibile connettersi al database!", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
con1.Close()
End Try
E
nd Sub
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, ci sono due questioni da risolvere:
  • Bisogna sistemare la query SQL perché al momento non è corretta. Se vuoi ottenere solo i record che contengono solo un certo testo all'interno di un campo, puoi fare:
    SELECT tabella.campo1, tabella.campo2 FROM tabella WHERE tabella.campo3 LIKE '%testo%'
    

    Al momento tu hai scritto "... FROM tabella.campo3 LIKE '*testo*'", in cui manca il nome della tabella nella clausola FROM e la clausola WHERE prima dell'operatore LIKE.
  • Il testo ovviamente non potrà trovarsi nella stringa, ma dovrà essere concatenato al resto della query similmente a quanto stavi facendo.
    Se fai in quel modo però sei esposto alla Sql Injection. Ti puoi proteggere costruendo la query SQL in questo modo, usando i parametri.
    http://stackoverflow.com/questions/228476/avoiding-sql-injection-in-sql-query-wi1th-like-operator-using-parameters#answer-228491


ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.