02. november 2004 - 00:42Der er
21 kommentarer og 1 løsning
SQL parameter og Datareader
Hvordan?..
Dette var min "gamle" løsning:
DataOleDb.Opendb("blabla")
dim sql as string = "SELECT * from Manager where Email = '" & txtbrugernavn.text & "' and Adgangskode = '" & txtadgangskode.text & "';"
DataOledb.Dandata(sql)
If Dataoledb.Data.read() 'kode her end if
DataOleDb.Closedb()
men nu bruger jeg sql parametre:
DataOleDb.Opendb("blabla")
dim con as oledbconnection = Dataoledb.con("futty") Dim ins As OleDbCommand = New OleDbCommand ("SELECT * from Manager where Email = @Brugernavn and Adgangskode = @Adgangskode;" , con) ins.Parameters.Add("@brugernavn", OleDbType.VarChar) ins.Parameters.Add("@adgangskode", OleDbType.VarChar) ins.Parameters("@brugernavn").Value = txtbrugernavn.text ins.Parameters("@adgangskode").Value = txtadgangskode.text
ins.ExecuteNonQuery
og nu kan jeg ikke bruge: If Dataoledb.Data.read() mere.. hvordan gør jeg så?
dim con as oledbconnection = Dataoledb.con("futty") Dim sel As OleDbCommand = New OleDbCommand ("SELECT * from Manager where Email = @Brugernavn and Adgangskode = @Adgangskode;" , con) sel.Parameters.Add("@brugernavn", OleDbType.VarChar) sel.Parameters.Add("@adgangskode", OleDbType.VarChar) sel.Parameters("@brugernavn").Value = txtbrugernavn.text sel.Parameters("@adgangskode").Value = txtadgangskode.text Dim rdr As OldDBDataReader = sel.ExexcuteReader
con = Dataoledb.con("futty") sel = New OleDbCommand ("UPDATE MANAGER SET antal_login = @nummer where ManagerID = @id;" , con) sel.Parameters.Add("@id", OleDbType.Integer) sel.Parameters.Add("@nummer", OleDbType.Integer) sel.Parameters("@id").Value = id sel.Parameters("@nummer").Value = nummer
sel.ExecuteNonQuery
Dette bliver ikke gemt i db'en. id og nummer indeholder begge data så det er ikke pga det.. hvad kan der være galt.
her er hele metoden:
Function Antallogin(id as integer) dim nummer as integer DataOleDb.Opendb("futty")
dim con as oledbconnection = Dataoledb.con("futty") Dim sel As OleDbCommand = New OleDbCommand ("SELECT antal_login from Manager where ManagerID = @id;" , con) sel.Parameters.Add("@id", OleDbType.Integer) sel.Parameters("@id").Value = id
Dim Data As OleDbDataReader = sel.ExecuteReader If Data.read() nummer = Data("antal_login") response.write(nummer) end if Data.Close()
nummer = nummer + 1
con = Dataoledb.con("futty") sel = New OleDbCommand ("UPDATE MANAGER SET antal_login = @nummer where ManagerID = @id;" , con) sel.Parameters.Add("@id", OleDbType.Integer) sel.Parameters.Add("@nummer", OleDbType.Integer) sel.Parameters("@id").Value = id sel.Parameters("@nummer").Value = nummer
sel.ExecuteNonQuery DataOleDb.Closedb() end function
nu har jeg testet stort set alt og har dobbelttjekket det igen..
dim upd as oledbconnection = Dataoledb.con("futty") dim sel2 as OleDbCommand = New OleDbCommand ("UPDATE MANAGER SET antal_login = @nummer where ManagerID = @id;" , upd)
sel2.Parameters.Add("@id", OleDbType.Integer) sel2.Parameters.Add("@nummer", OleDbType.Integer) sel2.Parameters("@id").Value = id sel2.Parameters("@nummer").Value = nummer + 1
sel2.ExecuteNonQuery
denne koder virker ikke, men den bliver kørt.
men dette fungerer udmærket:
dim sql as string = "UPDATE MANAGER SET antal_login = " & (nummer + 1) & " where ManagerID = " & id & ";" DataOleDB.SkrivData(sql) response.write(sql)
dim upd as oledbconnection = Dataoledb.con("futty") dim sel2 as OleDbCommand = New OleDbCommand ("UPDATE MANAGER SET antal_login = @nummer where ManagerID = @id;" , upd)
sel2.Parameters.Add("@id", OleDbType.Integer) sel2.Parameters.Add("@nummer", OleDbType.Integer) sel2.Parameters("@id").Value = id sel2.Parameters("@nummer").Value = nummer + 1
sel2.ExecuteNonQuery
så virker det ikke.. dvs den vil ikke gemme i databasen, men alle stedet jeg har en SELECT sql så virker det med SQL parametre fint.. :/
nå.. jeg fik det ikke løst, så jeg lukker bare spørgsmålet da der nok ikke sker mere :(
men takker for hjælpen.. :)
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.