webForumDet fria alternativet

DA.update

10 svar · 355 visningar · startad av henrikjohansson

henrikjohanssonMedlem sedan maj 2000360 inlägg
#1

For example, Update might execute a DELETE statement, followed by an INSERT statement, and then another DELETE statement, due to the ordering of the rows in the DataTable.

hmm det är väl inte så bra om den först tar bort en rad och sedan lägger till en ny rad.. Då får man nytt ID och allt..

jaja till problemet
Jag vill lagra en datatable i databasen och använder då denna ofullständinga kod

    Sub SaveNyheter()
        Dim Con As OleDbConnection = New OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings.Get("dbconn"))
        Dim DA As OleDbDataAdapter = New OleDbDataAdapter(sqlNyheter, Con)
        DA.Update(DTnyheter)
    End Sub

Vad är det som behövs för att den skall fungera korrekt?
har läst i hjälpen och testat lite olika saker men får det ej att fungera..

henrikjohanssonMedlem sedan maj 2000360 inlägg
#2

nu har jag kommit såhär långt

    Sub SaveNyheter()
        Dim DA As OleDbDataAdapter
        DA = New OleDbDataAdapter(sqlNyheter, Con)
        DA.Update(DTnyheter)
    End Sub

och det blir inga fel nu men det händer inget i databasen heller..

PMedlem sedan jan. 20012 204 inlägg
#3

och hur ser sqlNyheter satsen ut?

henrikjohanssonMedlem sedan maj 2000360 inlägg
#4

select * from nyheter

henrikjohanssonMedlem sedan maj 2000360 inlägg
#5

Jag har byggt om strukturen lite för att testa lite och nu har jag lagt alla db funktioner som har med nyheter att göra i en egen klass. Och där fungerar allt förutom spara. och jag kan tilllägga att jag kör Sattnyheter, Ny nyhet, Fillobj och sedan Spara..

  1. Är det rätt att bygga upp det som jag gjort eller är det åt helvette fel?
  2. Varför uppdateras inte databasen? är det nått jag glömt?
Imports System.Data.OleDb
Namespace Databas
    Public Module databasklassen
        Private DTnyheter As New DataTable()
        Private DAnyheter As OleDbDataAdapter
        Private Con As OleDbConnection = New OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings.Get("dbconn"))

        Public Class Nyheter
            Shared Sub Sattnyheter(ByVal sSQL As String)  'SQL = "Select * from nyheter"
                DTnyheter.Clear()
                DAnyheter = New OleDbDataAdapter(sSQL, Con)
                DAnyheter.Fill(DTnyheter)
            End Sub
            Shared Function GetNyheter() As DataTable
                Return DTnyheter
            End Function
            Shared Sub Fillobj(ByVal obj As Object)
                obj.DataSource = DTnyheter
                obj.DataBind()
            End Sub
            Shared Sub NyNyhet(ByVal sTitel As String, ByVal sTexten As String, ByVal sBild As String)
                Dim DRnyheter As DataRow
                DRnyheter = DTnyheter.NewRow()
                DRnyheter("Titel") = sTitel
                DRnyheter("Texten") = sTexten
                DRnyheter("Bild") = sBild
                DTnyheter.Rows.Add(DRnyheter)
                DTnyheter.AcceptChanges()
            End Sub
            Shared Function Spara()
                Return DAnyheter.Update(DTnyheter)
            End Function
        End Class
    End Module
End Namespace
henrikjohanssonMedlem sedan maj 2000360 inlägg
#6
  1. Är en dataset samma sak som flera datatables? om ja vad spelar det för roll om man har en dataset eller flera datatables?

  2. Som jag i det förra inlägget.. delar alla på DTnyheter och DAnyheter eller måste man för varje person fylla DTnyheter och DAnyheter?

  3. Behöver verkligen hjälp med förra inlägget.

henrikjohanssonMedlem sedan maj 2000360 inlägg
#7

Nu har jag fått Nynyhet att fungera men nu har ett nytt problem..
Det är så att när jag ändrar i datatablen så fungerar det inte att spara sedan.. Kan någon upplysa mig om vad det felet kan bero på?

                Shared Sub RedigeraNyhet(ByVal iRow As Integer, ByVal sTitel As String, ByVal sTexten As String, ByVal sBild As String)
                With DTnyheter.Rows(iRow)
                    .BeginEdit()
                    .Item("Titel") = "edited"
                    .Item("Texten") = "edited"
                    .Item("Bild") = "edited"
                    .EndEdit()
                End With

            End Sub
            Shared Sub Spara()
                Dim custCB As OleDbCommandBuilder = New OleDbCommandBuilder(DAnyheter)
                If Not Con.State = ConnectionState.Open Then
                    Con.Open()
                End If
                DAnyheter.Update(DTnyheter)
                Con.Close()
            End Sub

Felmeddelande: Operationen måste använda en fråga som kan uppdateras.

juventus1Medlem sedan dec. 2000399 inlägg
henrikjohanssonMedlem sedan maj 2000360 inlägg
#9

ok men jag har satt att alla och ASPNET har fulla rättigheter på databasen.

Det funkar nu.. skumt..

NETworkMedlem sedan juni 20011 732 inlägg
#10
  1. Är en dataset samma sak som flera datatables? om ja vad spelar det för roll om man har en dataset eller flera datatables?

Nja, det finns fler skillnader. En datatable är gissningsvis mindre resurskrävande än ett dataset, således ska du alöltid använda en datatable om du bara har en tabell. Några tecken mindre kod att skriva dessutom. Ett dataset är "serializable", dvs att du exempelvis kan använda relationer mellan tabeller i ditt dataset. Att den är serializable har också viss betydelse när du gör webservices, när det gäller dataströmmar och sånt tror jag...

henrikjohanssonMedlem sedan maj 2000360 inlägg
#11

ok

125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)