webForumDet fria alternativet

Lägga in i adapter + parameter.

.NET

5 svar · 352 visningar · startad av ConnyFox

Medlem sedan aug. 20011 087 inlägg
Frågan#1

Har följande kod och vill byta ut strängen direkt i sql frågan mot en parameter istället för att göra det säkrare

denna koden har jag just nu

        Dim conn As MySqlConnection
        Dim adapter As MySqlDataAdapter
        Dim dataset As New DataSet
        If ViewState("MySQLDataSet") Is Nothing Then
            ' Read the connection string from Web.config
            Dim strsearch As String = Search_title.Text
            conn = New MySqlConnection("server=localhost; database=jmdb; pooling=false;")
            Dim strSQL As String = "SELECT * FROM movies where title like '" & searchstring & "'"
            ' Create adapter
            adapter = New MySqlDataAdapter(strSQL, conn)
            ' Fill the DataSet
            adapter.Fill(dataset, "movies")

och vill altså skriva @searchtext i sql:en istället och lägga till något i stil med detta

conn.Parameters.Add("@searchstring", System.Data.SqlDbType.NVarChar, 150)
conn.Parameters("@searchstring").Value = strsearch

Medlem sedan dec. 19996 721 inlägg
#2
Dim strSQL As String = "SELECT * FROM movies where title like @searchstring"
adapter = New MySqlDataAdapter(strSQL, conn)
adapter.SelectCommand.Paramaters.Add("@searchstring", System.Data.SqlDbType.NVarChar, 150).Value=strsearch
Medlem sedan aug. 20011 087 inlägg
#3

EDIT: hmm verkar inte fungera alls, får varken felmeddelande eller några poster. sen så vill jag ha det så det fungerar som motsvarande

like '%" & strSearch & "%'

dvs med % som gör att delar av ord matchas. hur löser jag det?
såhär ser det ut nu

        ' Define data objects
        Dim conn As MySqlConnection
        Dim adapter As MySqlDataAdapter
        Dim dataset As New DataSet
        If ViewState("MySQLDataSet") Is Nothing Then
            ' Read the connection string from Web.config
            Dim strsearch As String = Search_title.Text
            conn = New MySqlConnection("server=localhost; database=jmdb; pooling=false;")
            Dim strSQL As String = "SELECT * FROM movies where title like @searchstring"
            adapter = New MySqlDataAdapter(strSQL, conn)
            adapter.SelectCommand.Parameters.Add("@searchstring", System.Data.SqlDbType.NVarChar, 150).Value = strsearch
            ' Fill the DataSet
            adapter.Fill(dataset, "movies")
            ' Store the DataSet in view state
            ViewState("MySQLDataSet") = dataset
        Else
            dataset = ViewState("MySQLDataSet")
        End If
Medlem sedan dec. 19996 721 inlägg
#4

.....Value = "%" & strsearch & "%"

eller

..... LIKE '%' + @searchstring + '%'"

Att du lagrar hela datasetet i Viewstate kan vi diskutera någon annan gång.. :)

Medlem sedan aug. 20011 087 inlägg
#5

Fungerar fortfarande inte, får inte tillbaka några poster alls oavsett vad jag skriver in

Medlem sedan dec. 19996 721 inlägg
#6

ConnyFox skrev:

Fungerar fortfarande inte, får inte tillbaka några poster alls oavsett vad jag skriver in

Äsch, det är ju jag som är blind och inte ser att det är en MySQL-databas...

Det ska vara "?", inte "@" i parameternamnen. Konkateneringsvarianten med '%' + .... kommer inte att funka, så fu får ta den andra (eller konkatenera à la MySQL). Dessutom ska det vara en MySqlDbType, inte en SqlDbType. Säkert något annat också, men börja så.

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)