När jag kodade i ASP så kunde jag i samma funktion välja data och sen uppdatera den samma. T.ex. först läsa av ett värde och sen uppdatera Det gör du med hjälp av ett dataset och en dataadapter. Det som kan va lite lurigt för nån från klassisk asp är att update-metoden hör till dataadaptern, inte datasetet. Hej! Det du uppdaterar med dataadapter.update(dataset) är INTE datasetet utan databasen! Du ska alltså införa dina ändringar i datasetet och sen låta update-metoden införa ändringarna i databasen.Uppdatera en SELECT fråga
strSQL = "SELECT * FROM News"
Set objRS = Server.CreateObject ("ADODB.Recordset")
objRS.Open strSQL, objConn, adOpenStatic, adLockOptimistic
objRS("Writer") = Session("UserID")
objRS("Related") = Request.Form("NewsIDRelated")
objRS("SeasonID") = Request.Form("SeasonID")
objRS.Update
Kan jag göra något liknande i ASP.NET?
Lite hjälp på traven i form av ledtrådar!
Sv: Uppdatera en SELECT fråga
Kolla här för ingående info:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatacommondataadapterclassupdatetopic.asp
mvh
/JonasSv:Uppdatera en SELECT fråga
Jag har jobbat på med min dataset men får inget resultat.
Följande kodsnutt ska uppdatera Art med ID med nytt saldo för Quantity. Inget händer. Inte ens felmeddelande så jag kanske är svaret väldigt nära.
' Öppna koppling till db
cn.Open()
' Skapa selectCommand
Dim adapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
adapter.SelectCommand = New OleDbCommand("SELECT [Art].[Quantity] FROM [Art] WHERE [Art].[ID] = @ID", cn)
' Denna radern vet jag inte vad den gör
Dim custCB As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)
' Skapa parametrar för ID
Dim parameterID As OleDbParameter = New OleDbParameter("@ID", OleDbType.Integer)
parameterID.Value = intID
adapter.SelectCommand.Parameters.Add(parameterID)
' Fyll dataset
Dim dataset As DataSet = New DataSet
adapter.Fill(dataset)
' Skapa updateCommand
adapter.UpdateCommand = New OleDbCommand("UPDATE [Art] SET [Quantity] = @Quantity WHERE [Art].[ID] = @ID")
adapter.UpdateCommand.Connection = cn
' Skapa paramteter för Quantity
Dim parameterQuantity As OleDbParameter = New OleDbParameter("@Quantity", OleDbType.Integer)
parameterQuantity.Value = 5
adapter.SelectCommand.Parameters.Add(parameterQuantity)
' Uppdatera dataset
adapter.Update(dataset)
' Stäng koppling till db
cn.Close()
Sv: Uppdatera en SELECT fråga
Det är viktigt att förstå att update-metoden inte nödvändigtvis utför en SQL-update. Ett dataset "minns" sitt ursprungliga tillstånd och det som händer när du kör dataadapter.update(dataset) är att metoden kollar igenom datasetet efter ändringhar och sedan inför dessa i databasen, så att den s.a.s. blir synkad med datasetet. Om detta kräver en SQL-delete snarare än en SQL-update så kommer alltså en SQL-delete att genomföras istället för en SQL-update.
Om du instanserar en commandbuilder med dataadaptern ifråga som argument så kommer den att automatiskt generera insert/update/delete-kommandon som svarar mot selecten du angett som adapterns selectcommand. När du sen kör dataadapter.update(dataset) så väljs automatiskt relevant autogenererat command, dvs update eller insert eller delete.
Du behöver alltså inte skapa ett eget update-command om du använder commandbuildern. Om du använder både/och kommer commandbuildern att generera de (eventuellt) saknade kommandona.
Läs särskilt det som står under Remarks i länken jag hänvisade till.
mvh
/Jonas