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..
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 och hur ser sqlNyheter satsen ut?
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..
- Är det rätt att bygga upp det som jag gjort eller är det åt helvette fel?
- 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
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.
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
- Ä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...