[VB.NET/MySQL] update db met XML mislukt

Pagina: 1
Acties:

  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 23-05 16:11

CaptBiele

No Worries!

Topicstarter
Ik ben bezig met een client(VB6) - server(.NET) applicatie. De client stuurt mij een xml file met daarin de nieuwe dataset. Nu wil ik deze veranderingen doorvoeren op de server.

Ik gebruik de volgende code om de client dataset te vullen.
Visual Basic .NET:
1
2
3
Dim stream As New StreamReader("C:\itempdata2.xml") 
dsClient.ReadXml(stream)
stream.Close()

Ik vul een tweede dataset, van de server. Dan vergelijk ik per rij (en zelfs per item) of ze verschillen. Maar volgens mij gaat er bij het inlezen van de client dataset iets mis.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Dim strConnection As String = ConfigurationSettings.AppSettings("ConnString")
Dim cnn As New OdbcConnection(strConnection)
Dim strSQL As String = "SELECT * FROM iTempData"
Dim da As New OdbcDataAdapter(strSQL, cnn)
Dim CmdBld As New OdbcCommandBuilder(da) 
Dim dsServer As New DataSet 'contains the original data
Dim dsToInsert As New DataSet 'contains the rows that should be added 
Dim drServer As DataRow 'a single row in the server dataset

da.Fill(dsServer, "ServerData")

Dim intRow As Integer = 0
Dim intTemp As Integer = 0
Dim intItem As Integer = 0 'Item 0 is autonumber and is always different

'This loops checks how long the serverrows are similar to the clientrows
For intRow = 0 To dsServer.Tables(0).Rows.Count - 1
  drServer = dsServer.Tables(0).Rows(intRow)  'current row of server data
  drClient = dsClient.Tables(0).Rows(intRow) 'current row of client data

  While (intItem < drServer.ItemArray.Length - 1)
    If (drServer.Item(intItem) <> drClient.Item(intItem)) And intItem <> 0 Then
      Exit For
    End If
    intItem = intItem + 1
  End While
intTemp = intTemp + 1
Next

For intRow = intTemp To dsClient.Tables(0).Rows.Count - 1
  drClient = dsClient.Tables(0).Rows(intRow) 'current row of client data
  dsServer.Tables(0).ImportRow(drClient) 'the client rows are imported
Next

If dsServer.HasChanges(DataRowState.Added) Then
  dsToInsert = dsServer.GetChanges(DataRowState.Added)
  da.Update(dsToInsert, "ServerData")
End If

dsServer.AcceptChanges()


Als ik de code run krijg ik een MySQL-foutmelding dat column1 niet gevonden kan worden. ASP herkent dus de items in de dataset niet.
Ik kan wel dsClient.WriteXML doen, dus ik d8 dat ik automatisch een correcte dataset had..... Verder denk ik dat het misschien iets te maken heeft met de eerste kolom in de tabel: autoNumber

vraag: Ik zou graag willen weten waarom ik niet de records uit mijn dataset kan lezen :'(

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Waarom ga je eerst die file in een stream inlezen, en dan pas ReadXml doen?
ReadXml heeft ook een overload die een filename neemt als argument.

https://fgheysels.github.io/


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 23-05 16:11

CaptBiele

No Worries!

Topicstarter
whoami schreef op 17 juni 2004 @ 11:06:
Waarom ga je eerst die file in een stream inlezen, en dan pas ReadXml doen?
ReadXml heeft ook een overload die een filename neemt als argument.
Die stream gebruik ik omdat ik ook variabelen uitlees in de header van het xml document, die staan er als commentaar.
Ik neem aan dat dat geen invloed heeft op het inlezen van de dataset....