18. maj 2010 - 15:48Der er
4 kommentarer og 1 løsning
SQL Parameters ved DataAdapter
Hej, jeg bruger følgende metode til at fylde et GridView:
strSql = "SELECT * FROM Sager WHERE Adresse LIKE txtAdresse.Text"
Using conn As New OleDbConnection(Boligcs) conn.Open()
Dim ad As New OleDbDataAdapter(strSql, conn) Dim ds As New DataSet()
ad.Fill(ds)
GridView1.DataSource = ds GridView1.DataBind()
End Using
Jeg vil så gerne smide en parameter på txtAdresse.text (@Adresse) for at undgå Sql Injection. Hvordan tilfører jeg SQL-parametre til en DataAdapter på samme måde som jeg kan på en OleDbCommand?
con = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb") con.Open cmd = New OleDbCommand("SELECT * FROM T1 WHERE F1 >= ?", con) cmd.Parameters.Add("@F1", OleDbType.Integer) cmd.Parameters("@F1").Value = 2 da = New OleDbDataAdapter(cmd) cb = New OleDbCommandBuilder(da) da.UpdateCommand = cb.GetUpdateCommand ds = New DataSet da.Fill(ds, "T1") dg = New DataGrid
Men jeg har som noget nyt lidt fundet ud af, at det har betydning, når jeg har flere navngivne parametre i samme sql-sætning, hvilken rækkefølge de deklareres i..! Ellers virker det ikke.
Hvordan kan det være, og hvordan kommer man uden om det?
Oki. Har brugt OleDB med navngivne parametre masser af gange, men aldrig opdaget at rækkefølgen var nødvendig.
Fandt ud af at OleDbDataAdapter også har en .SelectCommand som man kan smide .Parameters.AddWithValue på. så man ikke nødvendigvis behøver at bruge OleDbCommand - men fint eksempel.
Tak for helps denne gang :)
Synes godt om
Ny brugerNybegynder
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.